From b96f50948c988511dd2ff9425cc9a119b1e70fd1 Mon Sep 17 00:00:00 2001 From: galleon Date: Sat, 30 Sep 2023 02:31:43 +0000 Subject: [PATCH] publish documentation --- 404.html | 6 +++--- assets/js/{100.05615a4c.js => 100.c1c95447.js} | 2 +- assets/js/{101.af65cdb6.js => 101.2ba44b70.js} | 2 +- assets/js/{102.9c488646.js => 102.88ded8f7.js} | 2 +- assets/js/{103.22f8a3d9.js => 103.2a5ca6a9.js} | 2 +- assets/js/{104.ba672a67.js => 104.d528b5f4.js} | 2 +- assets/js/{105.26726e67.js => 105.8797ade9.js} | 2 +- assets/js/{106.86595868.js => 106.69fdf1bc.js} | 2 +- assets/js/{107.6f39b6f8.js => 107.9e81e6a8.js} | 2 +- assets/js/{14.d241ed76.js => 14.03754e01.js} | 2 +- assets/js/{17.89c9c195.js => 17.bbd84e71.js} | 2 +- assets/js/{18.b5dc543d.js => 18.6ccce1d5.js} | 2 +- assets/js/{19.042c7c8d.js => 19.1e9a6f2b.js} | 2 +- assets/js/{20.a340f56c.js => 20.95e31e08.js} | 2 +- assets/js/{22.6c7e043d.js => 22.6e2f82e7.js} | 2 +- assets/js/{23.6d04fe51.js => 23.d1256449.js} | 2 +- assets/js/{24.33c8a7be.js => 24.873c1d53.js} | 2 +- assets/js/{25.a29dba80.js => 25.6d2c9156.js} | 2 +- assets/js/{26.b3309d0b.js => 26.dd5dc9b5.js} | 2 +- assets/js/{27.46dcca47.js => 27.8769ca36.js} | 2 +- assets/js/{28.ad9d4fa2.js => 28.85f6a5d4.js} | 2 +- assets/js/{29.99d0c510.js => 29.a0ec034c.js} | 2 +- assets/js/{30.cf49d4dc.js => 30.040f976b.js} | 2 +- assets/js/{31.cb0bb539.js => 31.7ce3a643.js} | 2 +- assets/js/{32.1df5e81f.js => 32.b09a0704.js} | 2 +- assets/js/{33.21043598.js => 33.b7efa69d.js} | 2 +- assets/js/{34.52c334fa.js => 34.baaf1ed0.js} | 2 +- assets/js/{35.2e6418dd.js => 35.3ceebbae.js} | 2 +- assets/js/{36.c6c4b6aa.js => 36.d6aec86c.js} | 2 +- assets/js/{37.8cc2308e.js => 37.5877612b.js} | 2 +- assets/js/{38.bdb4aadb.js => 38.09a340e5.js} | 2 +- assets/js/{39.be040e86.js => 39.1fcc5dab.js} | 2 +- assets/js/{40.4c934f37.js => 40.79a4140c.js} | 2 +- assets/js/{41.45db3c9e.js => 41.603bccf2.js} | 2 +- assets/js/{42.21215d97.js => 42.17aef09d.js} | 2 +- assets/js/{43.7c12ad8c.js => 43.10c2444a.js} | 2 +- assets/js/{44.85bd56cd.js => 44.635efb10.js} | 2 +- assets/js/{45.2460e63f.js => 45.a8c5ea73.js} | 2 +- assets/js/{46.abf71b97.js => 46.42e7f1ef.js} | 2 +- assets/js/{47.f3dbe971.js => 47.08a92069.js} | 2 +- assets/js/{48.430bc4fd.js => 48.19a3d966.js} | 2 +- assets/js/{49.96621ac8.js => 49.74f8be29.js} | 2 +- assets/js/{50.a68becbd.js => 50.cb4c3a02.js} | 2 +- assets/js/{51.ae376dc3.js => 51.bb88bd59.js} | 2 +- assets/js/{52.4e12f13d.js => 52.24ae6218.js} | 2 +- assets/js/{53.bb7dbc2d.js => 53.98908543.js} | 2 +- assets/js/{54.47310ab3.js => 54.b77ef2b6.js} | 2 +- assets/js/{55.045dc9c8.js => 55.f0b608fb.js} | 2 +- assets/js/{56.dbc4c9c6.js => 56.efea09fa.js} | 2 +- assets/js/{57.5e1551a4.js => 57.02c2f8da.js} | 2 +- assets/js/{58.160f495b.js => 58.ce911ac4.js} | 2 +- assets/js/{59.a8651d17.js => 59.420ff0ea.js} | 2 +- assets/js/{60.6c2f4c3a.js => 60.a4aa7c25.js} | 2 +- assets/js/{61.8673455c.js => 61.45618eff.js} | 2 +- assets/js/{62.1afed381.js => 62.f1fe426f.js} | 2 +- assets/js/{63.c0dff1a3.js => 63.499bf202.js} | 2 +- assets/js/{64.729ad317.js => 64.2d2cdb9b.js} | 2 +- assets/js/{65.9fc9742c.js => 65.15dcaa17.js} | 2 +- assets/js/{66.bc5b48df.js => 66.50880736.js} | 2 +- assets/js/{67.f5fd51be.js => 67.e48117f5.js} | 2 +- assets/js/{68.e9188f2e.js => 68.6c776358.js} | 2 +- assets/js/{69.87bd401b.js => 69.fb1f66c4.js} | 2 +- assets/js/{70.5ae5bad4.js => 70.16f7a11c.js} | 2 +- assets/js/{71.02251787.js => 71.3dd1e6ad.js} | 2 +- assets/js/{72.e6058bba.js => 72.f0021b91.js} | 2 +- assets/js/{73.db870ad5.js => 73.90e04b60.js} | 2 +- assets/js/{74.54b6c457.js => 74.9c7f0c6e.js} | 2 +- assets/js/{75.c4bf820a.js => 75.5deda9e6.js} | 2 +- assets/js/{76.7fe24ca3.js => 76.adf7b8fd.js} | 2 +- assets/js/{77.fc52da21.js => 77.71b206d1.js} | 2 +- assets/js/{78.035fe9d5.js => 78.6220d0c0.js} | 2 +- assets/js/{79.f0286e63.js => 79.20b9a5eb.js} | 2 +- assets/js/{80.12d34d16.js => 80.a0a15f2f.js} | 2 +- assets/js/{81.f29c3c22.js => 81.afd6e561.js} | 2 +- assets/js/{82.a8b0a8d3.js => 82.e2f4ee2e.js} | 2 +- assets/js/{83.c689a157.js => 83.d1c4d628.js} | 2 +- assets/js/{84.1f2a9105.js => 84.2a2a7a1f.js} | 2 +- assets/js/{85.45b8209e.js => 85.bc9b148e.js} | 2 +- assets/js/{86.6aabc323.js => 86.eee4f1ba.js} | 2 +- assets/js/{87.b5140c2e.js => 87.a521f469.js} | 2 +- assets/js/{88.35569a43.js => 88.bf35358e.js} | 2 +- assets/js/{89.cbad12ec.js => 89.e2dfc1fe.js} | 2 +- assets/js/{90.8e043d28.js => 90.ae0f6209.js} | 2 +- assets/js/{91.eaeb2ca0.js => 91.e1b23282.js} | 2 +- assets/js/{92.27ea0054.js => 92.cc587544.js} | 2 +- assets/js/{93.6ce172af.js => 93.a1adaaca.js} | 2 +- assets/js/{94.9183f586.js => 94.c652a9a7.js} | 2 +- assets/js/{95.7ad26ea5.js => 95.41b37656.js} | 2 +- assets/js/{96.7ec3d5f8.js => 96.58f8cf4d.js} | 2 +- assets/js/{97.19533b24.js => 97.502f5e4c.js} | 2 +- assets/js/{98.b3c3d224.js => 98.ff2e0270.js} | 2 +- assets/js/{99.875ee937.js => 99.8345bddc.js} | 2 +- assets/js/{app.627eed30.js => app.e12a7118.js} | 6 +++--- codegen/_domainspec.html | 4 ++-- codegen/_solverspec.html | 4 ++-- codegen/index.html | 8 ++++---- contribute.html | 4 ++-- guide/index.html | 4 ++-- index.html | 4 ++-- install.html | 4 ++-- notebooks/index.html | 4 ++-- reference/_skdecide.builders.domain.agent.html | 4 ++-- reference/_skdecide.builders.domain.concurrency.html | 4 ++-- reference/_skdecide.builders.domain.constraints.html | 4 ++-- reference/_skdecide.builders.domain.dynamics.html | 4 ++-- reference/_skdecide.builders.domain.events.html | 4 ++-- reference/_skdecide.builders.domain.goals.html | 4 ++-- reference/_skdecide.builders.domain.initialization.html | 4 ++-- reference/_skdecide.builders.domain.memory.html | 4 ++-- reference/_skdecide.builders.domain.observability.html | 4 ++-- reference/_skdecide.builders.domain.renderability.html | 4 ++-- ...cide.builders.domain.scheduling.conditional_tasks.html | 4 ++-- ...skdecide.builders.domain.scheduling.graph_toolbox.html | 4 ++-- reference/_skdecide.builders.domain.scheduling.modes.html | 4 ++-- ...kdecide.builders.domain.scheduling.preallocations.html | 4 ++-- .../_skdecide.builders.domain.scheduling.precedence.html | 4 ++-- ..._skdecide.builders.domain.scheduling.preemptivity.html | 4 ++-- ....builders.domain.scheduling.resource_availability.html | 4 ++-- ...e.builders.domain.scheduling.resource_consumption.html | 4 ++-- ...kdecide.builders.domain.scheduling.resource_costs.html | 4 ++-- ....builders.domain.scheduling.resource_renewability.html | 4 ++-- ...skdecide.builders.domain.scheduling.resource_type.html | 4 ++-- ...ide.builders.domain.scheduling.scheduling_domains.html | 4 ++-- ...rs.domain.scheduling.scheduling_domains_modelling.html | 4 ++-- .../_skdecide.builders.domain.scheduling.skills.html | 4 ++-- reference/_skdecide.builders.domain.scheduling.task.html | 4 ++-- ...skdecide.builders.domain.scheduling.task_duration.html | 4 ++-- ...skdecide.builders.domain.scheduling.task_progress.html | 4 ++-- .../_skdecide.builders.domain.scheduling.time_lag.html | 4 ++-- ..._skdecide.builders.domain.scheduling.time_windows.html | 4 ++-- reference/_skdecide.builders.domain.value.html | 4 ++-- reference/_skdecide.builders.solver.assessability.html | 4 ++-- reference/_skdecide.builders.solver.parallelability.html | 4 ++-- reference/_skdecide.builders.solver.policy.html | 4 ++-- reference/_skdecide.builders.solver.restorability.html | 4 ++-- reference/_skdecide.core.html | 4 ++-- reference/_skdecide.domains.html | 4 ++-- ...g.weather_interpolator.weather_tools.common_utils.html | 4 ++-- ...interpolator.weather_tools.interpolator.intergrid.html | 4 ++-- ...anning.weather_interpolator.weather_tools.std_atm.html | 4 ++-- ...eather_interpolator.weather_tools.unit_conversion.html | 4 ++-- reference/_skdecide.hub.domain.gym.gym.html | 4 ++-- reference/_skdecide.hub.domain.mastermind.mastermind.html | 4 ++-- reference/_skdecide.hub.domain.maze.maze.html | 4 ++-- reference/_skdecide.hub.domain.rcpsp.rcpsp_sk.html | 4 ++-- reference/_skdecide.hub.domain.rcpsp.rcpsp_sk_parser.html | 4 ++-- ...ub.domain.rock_paper_scissors.rock_paper_scissors.html | 4 ++-- ...de.hub.domain.simple_grid_world.simple_grid_world.html | 4 ++-- reference/_skdecide.hub.solver.aostar.aostar.html | 4 ++-- reference/_skdecide.hub.solver.ars.ars.html | 4 ++-- reference/_skdecide.hub.solver.astar.astar.html | 4 ++-- reference/_skdecide.hub.solver.bfws.bfws.html | 4 ++-- reference/_skdecide.hub.solver.cgp.cgp.html | 4 ++-- reference/_skdecide.hub.solver.cgp.pycgp.cgp.html | 4 ++-- reference/_skdecide.hub.solver.cgp.pycgp.cgpes.html | 4 ++-- .../_skdecide.hub.solver.cgp.pycgp.cgpfunctions.html | 4 ++-- reference/_skdecide.hub.solver.cgp.pycgp.evaluator.html | 4 ++-- ...kdecide.hub.solver.do_solver.do_solver_scheduling.html | 4 ++-- .../_skdecide.hub.solver.do_solver.sk_to_do_binding.html | 4 ++-- reference/_skdecide.hub.solver.gphh.gphh.html | 4 ++-- ...skdecide.hub.solver.graph_explorer.DFSExploration.html | 4 ++-- ...b.solver.graph_explorer.DFS_Uncertain_Exploration.html | 4 ++-- ...de.hub.solver.graph_explorer.FullSpaceExploration.html | 4 ++-- .../_skdecide.hub.solver.graph_explorer.GraphDomain.html | 4 ++-- ...decide.hub.solver.graph_explorer.GraphExploration.html | 4 ++-- reference/_skdecide.hub.solver.ilaostar.ilaostar.html | 4 ++-- reference/_skdecide.hub.solver.iw.iw.html | 4 ++-- reference/_skdecide.hub.solver.lazy_astar.lazy_astar.html | 4 ++-- reference/_skdecide.hub.solver.lrtastar.lrtastar.html | 4 ++-- reference/_skdecide.hub.solver.lrtdp.lrtdp.html | 4 ++-- reference/_skdecide.hub.solver.mahd.mahd.html | 4 ++-- reference/_skdecide.hub.solver.martdp.martdp.html | 4 ++-- reference/_skdecide.hub.solver.maxent_irl.maxent_irl.html | 4 ++-- reference/_skdecide.hub.solver.mcts.mcts.html | 4 ++-- .../_skdecide.hub.solver.meta_policy.meta_policies.html | 4 ++-- .../_skdecide.hub.solver.pile_policy.pile_policy.html | 4 ++-- ...ide.hub.solver.policy_evaluators.policy_evaluator.html | 4 ++-- reference/_skdecide.hub.solver.pomcp.pomcp.html | 4 ++-- reference/_skdecide.hub.solver.ray_rllib.ray_rllib.html | 4 ++-- reference/_skdecide.hub.solver.riw.riw.html | 4 ++-- .../_skdecide.hub.solver.sgs_policies.sgs_policies.html | 4 ++-- .../_skdecide.hub.solver.simple_greedy.simple_greedy.html | 4 ++-- ...cide.hub.solver.stable_baselines.stable_baselines.html | 4 ++-- reference/_skdecide.hub.space.gym.gym.html | 4 ++-- reference/_skdecide.solvers.html | 4 ++-- reference/_skdecide.utils.html | 4 ++-- reference/index.html | 4 ++-- 187 files changed, 287 insertions(+), 287 deletions(-) rename assets/js/{100.05615a4c.js => 100.c1c95447.js} (99%) rename assets/js/{101.af65cdb6.js => 101.2ba44b70.js} (90%) rename assets/js/{102.9c488646.js => 102.88ded8f7.js} (92%) rename assets/js/{103.22f8a3d9.js => 103.2a5ca6a9.js} (90%) rename assets/js/{104.ba672a67.js => 104.d528b5f4.js} (99%) rename assets/js/{105.26726e67.js => 105.8797ade9.js} (99%) rename assets/js/{106.86595868.js => 106.69fdf1bc.js} (99%) rename assets/js/{107.6f39b6f8.js => 107.9e81e6a8.js} (99%) rename assets/js/{14.d241ed76.js => 14.03754e01.js} (94%) rename assets/js/{17.89c9c195.js => 17.bbd84e71.js} (92%) rename assets/js/{18.b5dc543d.js => 18.6ccce1d5.js} (99%) rename assets/js/{19.042c7c8d.js => 19.1e9a6f2b.js} (99%) rename assets/js/{20.a340f56c.js => 20.95e31e08.js} (99%) rename assets/js/{22.6c7e043d.js => 22.6e2f82e7.js} (99%) rename assets/js/{23.6d04fe51.js => 23.d1256449.js} (94%) rename assets/js/{24.33c8a7be.js => 24.873c1d53.js} (94%) rename assets/js/{25.a29dba80.js => 25.6d2c9156.js} (98%) rename assets/js/{26.b3309d0b.js => 26.dd5dc9b5.js} (99%) rename assets/js/{27.46dcca47.js => 27.8769ca36.js} (99%) rename assets/js/{28.ad9d4fa2.js => 28.85f6a5d4.js} (99%) rename assets/js/{29.99d0c510.js => 29.a0ec034c.js} (99%) rename assets/js/{30.cf49d4dc.js => 30.040f976b.js} (99%) rename assets/js/{31.cb0bb539.js => 31.7ce3a643.js} (99%) rename assets/js/{32.1df5e81f.js => 32.b09a0704.js} (98%) rename assets/js/{33.21043598.js => 33.b7efa69d.js} (99%) rename assets/js/{34.52c334fa.js => 34.baaf1ed0.js} (90%) rename assets/js/{35.2e6418dd.js => 35.3ceebbae.js} (99%) rename assets/js/{36.c6c4b6aa.js => 36.d6aec86c.js} (98%) rename assets/js/{37.8cc2308e.js => 37.5877612b.js} (98%) rename assets/js/{38.bdb4aadb.js => 38.09a340e5.js} (99%) rename assets/js/{39.be040e86.js => 39.1fcc5dab.js} (99%) rename assets/js/{40.4c934f37.js => 40.79a4140c.js} (98%) rename assets/js/{41.45db3c9e.js => 41.603bccf2.js} (98%) rename assets/js/{42.21215d97.js => 42.17aef09d.js} (98%) rename assets/js/{43.7c12ad8c.js => 43.10c2444a.js} (99%) rename assets/js/{44.85bd56cd.js => 44.635efb10.js} (99%) rename assets/js/{45.2460e63f.js => 45.a8c5ea73.js} (98%) rename assets/js/{46.abf71b97.js => 46.42e7f1ef.js} (99%) rename assets/js/{47.f3dbe971.js => 47.08a92069.js} (90%) rename assets/js/{48.430bc4fd.js => 48.19a3d966.js} (99%) rename assets/js/{49.96621ac8.js => 49.74f8be29.js} (98%) rename assets/js/{50.a68becbd.js => 50.cb4c3a02.js} (99%) rename assets/js/{51.ae376dc3.js => 51.bb88bd59.js} (99%) rename assets/js/{52.4e12f13d.js => 52.24ae6218.js} (99%) rename assets/js/{53.bb7dbc2d.js => 53.98908543.js} (99%) rename assets/js/{54.47310ab3.js => 54.b77ef2b6.js} (98%) rename assets/js/{55.045dc9c8.js => 55.f0b608fb.js} (99%) rename assets/js/{56.dbc4c9c6.js => 56.efea09fa.js} (98%) rename assets/js/{57.5e1551a4.js => 57.02c2f8da.js} (99%) rename assets/js/{58.160f495b.js => 58.ce911ac4.js} (99%) rename assets/js/{59.a8651d17.js => 59.420ff0ea.js} (96%) rename assets/js/{60.6c2f4c3a.js => 60.a4aa7c25.js} (97%) rename assets/js/{61.8673455c.js => 61.45618eff.js} (99%) rename assets/js/{62.1afed381.js => 62.f1fe426f.js} (99%) rename assets/js/{63.c0dff1a3.js => 63.499bf202.js} (99%) rename assets/js/{64.729ad317.js => 64.2d2cdb9b.js} (98%) rename assets/js/{65.9fc9742c.js => 65.15dcaa17.js} (96%) rename assets/js/{66.bc5b48df.js => 66.50880736.js} (90%) rename assets/js/{67.f5fd51be.js => 67.e48117f5.js} (90%) rename assets/js/{68.e9188f2e.js => 68.6c776358.js} (97%) rename assets/js/{69.87bd401b.js => 69.fb1f66c4.js} (97%) rename assets/js/{70.5ae5bad4.js => 70.16f7a11c.js} (90%) rename assets/js/{71.02251787.js => 71.3dd1e6ad.js} (92%) rename assets/js/{72.e6058bba.js => 72.f0021b91.js} (90%) rename assets/js/{73.db870ad5.js => 73.90e04b60.js} (90%) rename assets/js/{74.54b6c457.js => 74.9c7f0c6e.js} (97%) rename assets/js/{75.c4bf820a.js => 75.5deda9e6.js} (90%) rename assets/js/{76.7fe24ca3.js => 76.adf7b8fd.js} (90%) rename assets/js/{77.fc52da21.js => 77.71b206d1.js} (90%) rename assets/js/{78.035fe9d5.js => 78.6220d0c0.js} (90%) rename assets/js/{79.f0286e63.js => 79.20b9a5eb.js} (92%) rename assets/js/{80.12d34d16.js => 80.a0a15f2f.js} (90%) rename assets/js/{81.f29c3c22.js => 81.afd6e561.js} (98%) rename assets/js/{82.a8b0a8d3.js => 82.e2f4ee2e.js} (90%) rename assets/js/{83.c689a157.js => 83.d1c4d628.js} (91%) rename assets/js/{84.1f2a9105.js => 84.2a2a7a1f.js} (93%) rename assets/js/{85.45b8209e.js => 85.bc9b148e.js} (90%) rename assets/js/{86.6aabc323.js => 86.eee4f1ba.js} (91%) rename assets/js/{87.b5140c2e.js => 87.a521f469.js} (90%) rename assets/js/{88.35569a43.js => 88.bf35358e.js} (89%) rename assets/js/{89.cbad12ec.js => 89.e2dfc1fe.js} (90%) rename assets/js/{90.8e043d28.js => 90.ae0f6209.js} (90%) rename assets/js/{91.eaeb2ca0.js => 91.e1b23282.js} (90%) rename assets/js/{92.27ea0054.js => 92.cc587544.js} (90%) rename assets/js/{93.6ce172af.js => 93.a1adaaca.js} (90%) rename assets/js/{94.9183f586.js => 94.c652a9a7.js} (90%) rename assets/js/{95.7ad26ea5.js => 95.41b37656.js} (90%) rename assets/js/{96.7ec3d5f8.js => 96.58f8cf4d.js} (90%) rename assets/js/{97.19533b24.js => 97.502f5e4c.js} (92%) rename assets/js/{98.b3c3d224.js => 98.ff2e0270.js} (91%) rename assets/js/{99.875ee937.js => 99.8345bddc.js} (94%) rename assets/js/{app.627eed30.js => app.e12a7118.js} (83%) diff --git a/404.html b/404.html index ab5c5bc81e..02a786877b 100644 --- a/404.html +++ b/404.html @@ -8,13 +8,13 @@ - + -

404

There's nothing here.
+ - + diff --git a/assets/js/100.05615a4c.js b/assets/js/100.c1c95447.js similarity index 99% rename from assets/js/100.05615a4c.js rename to assets/js/100.c1c95447.js index 5b6903a3ab..cd3146ae6f 100644 --- a/assets/js/100.05615a4c.js +++ b/assets/js/100.c1c95447.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{616:function(e,t,a){"use strict";a.r(t);var s=a(38),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"hub-solver-ray-rllib-ray-rllib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-ray-rllib-ray-rllib"}},[e._v("#")]),e._v(" hub.solver.ray_rllib.ray_rllib")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"rayrllib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rayrllib"}},[e._v("#")]),e._v(" RayRLlib")]),e._v(" "),a("p",[e._v("This class wraps a Ray RLlib solver (ray[rllib]) as a scikit-decide solver.")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("Using this class requires Ray RLlib to be installed.")])]),e._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[e._v("#")]),e._v(" Constructor "),a("Badge",{attrs:{text:"RayRLlib",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"RayRLlib",sig:{params:[{name:"algo_class",annotation:"Type[Trainer]"},{name:"train_iterations",annotation:"int"},{name:"config",default:"None",annotation:"Optional[Dict]"},{name:"policy_configs",default:"{'policy': {}}",annotation:"Dict[str, Dict]"},{name:"policy_mapping_fn",default:"",annotation:"Callable[[str], str]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Initialize Ray RLlib.")]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("algo_class")]),e._v(": The class of Ray RLlib trainer/agent to wrap.")]),e._v(" "),a("li",[a("strong",[e._v("train_iterations")]),e._v(": The number of iterations to call the trainer's train() method.")]),e._v(" "),a("li",[a("strong",[e._v("config")]),e._v(": The configuration dictionary for the trainer.")]),e._v(" "),a("li",[a("strong",[e._v("policy_configs")]),e._v(": The mapping from policy id (str) to additional config (dict) (leave default for single policy).")]),e._v(" "),a("li",[a("strong",[e._v("policy_mapping_fn")]),e._v(": The function mapping agent ids to policy ids (leave default for single policy).")])]),e._v(" "),a("h3",{attrs:{id:"check-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain"}},[e._v("#")]),e._v(" check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements"}},[e._v("#")]),e._v(" get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for"}},[e._v("#")]),e._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"load"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#load"}},[e._v("#")]),e._v(" load "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Restore the solver state from given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path where the solver state was saved.")]),e._v(" "),a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),e._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[e._v("#")]),e._v(" reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action"}},[e._v("#")]),e._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"save"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[e._v("#")]),e._v(" save "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),e._v(" "),a("p",[e._v("Save the solver state to given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path to store the saved state.")])]),e._v(" "),a("h3",{attrs:{id:"solve"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve"}},[e._v("#")]),e._v(" solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from"}},[e._v("#")]),e._v(" solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"check-domain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-2"}},[e._v("#")]),e._v(" _check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define specific\nchecks in addition to the "domain requirements"). The boilerplate code automatically checks whether all domain\nrequirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"check-domain-additional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-additional"}},[e._v("#")]),e._v(" _check_domain_additional "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain_additional",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v('Check whether the given domain is compliant with the specific requirements of this solver type (i.e. the\nones in addition to "domain requirements").')]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._check_domain()")]),e._v(". It focuses on specific checks, as\nopposed to taking also into account the domain requirements for the latter.")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the specific requirements of this solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"cleanup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cleanup"}},[e._v("#")]),e._v(" _cleanup "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_cleanup",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs cleanup code here, or code to be executed at the exit of a\n'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements-2"}},[e._v("#")]),e._v(" _get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"initialize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize"}},[e._v("#")]),e._v(" _initialize "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_initialize",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs long-lasting initialization code here, or code to be executed at the\nentering of a 'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-2"}},[e._v("#")]),e._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"load-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#load-2"}},[e._v("#")]),e._v(" _load "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}]}}}),e._v(" "),a("p",[e._v("Restore the solver state from given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path where the solver state was saved.")]),e._v(" "),a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),e._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[e._v("#")]),e._v(" _reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-2"}},[e._v("#")]),e._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"save-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-2"}},[e._v("#")]),e._v(" _save "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),e._v(" "),a("p",[e._v("Save the solver state to given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path to store the saved state.")])]),e._v(" "),a("h3",{attrs:{id:"solve-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-2"}},[e._v("#")]),e._v(" _solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve_domain()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-domain"}},[e._v("#")]),e._v(" _solve_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_domain",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._solve()")]),e._v(", the difference being that the domain factory\nhere returns domains auto-cast to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (auto-cast to expected level).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from-2"}},[e._v("#")]),e._v(" _solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{612:function(e,t,a){"use strict";a.r(t);var s=a(38),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"hub-solver-ray-rllib-ray-rllib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-ray-rllib-ray-rllib"}},[e._v("#")]),e._v(" hub.solver.ray_rllib.ray_rllib")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"rayrllib"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rayrllib"}},[e._v("#")]),e._v(" RayRLlib")]),e._v(" "),a("p",[e._v("This class wraps a Ray RLlib solver (ray[rllib]) as a scikit-decide solver.")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("Using this class requires Ray RLlib to be installed.")])]),e._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[e._v("#")]),e._v(" Constructor "),a("Badge",{attrs:{text:"RayRLlib",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"RayRLlib",sig:{params:[{name:"algo_class",annotation:"Type[Trainer]"},{name:"train_iterations",annotation:"int"},{name:"config",default:"None",annotation:"Optional[Dict]"},{name:"policy_configs",default:"{'policy': {}}",annotation:"Dict[str, Dict]"},{name:"policy_mapping_fn",default:"",annotation:"Callable[[str], str]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Initialize Ray RLlib.")]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("algo_class")]),e._v(": The class of Ray RLlib trainer/agent to wrap.")]),e._v(" "),a("li",[a("strong",[e._v("train_iterations")]),e._v(": The number of iterations to call the trainer's train() method.")]),e._v(" "),a("li",[a("strong",[e._v("config")]),e._v(": The configuration dictionary for the trainer.")]),e._v(" "),a("li",[a("strong",[e._v("policy_configs")]),e._v(": The mapping from policy id (str) to additional config (dict) (leave default for single policy).")]),e._v(" "),a("li",[a("strong",[e._v("policy_mapping_fn")]),e._v(": The function mapping agent ids to policy ids (leave default for single policy).")])]),e._v(" "),a("h3",{attrs:{id:"check-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain"}},[e._v("#")]),e._v(" check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements"}},[e._v("#")]),e._v(" get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for"}},[e._v("#")]),e._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"load"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#load"}},[e._v("#")]),e._v(" load "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Restore the solver state from given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path where the solver state was saved.")]),e._v(" "),a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),e._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[e._v("#")]),e._v(" reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action"}},[e._v("#")]),e._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"save"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[e._v("#")]),e._v(" save "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),e._v(" "),a("p",[e._v("Save the solver state to given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path to store the saved state.")])]),e._v(" "),a("h3",{attrs:{id:"solve"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve"}},[e._v("#")]),e._v(" solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from"}},[e._v("#")]),e._v(" solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"check-domain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-2"}},[e._v("#")]),e._v(" _check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define specific\nchecks in addition to the "domain requirements"). The boilerplate code automatically checks whether all domain\nrequirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"check-domain-additional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-additional"}},[e._v("#")]),e._v(" _check_domain_additional "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain_additional",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v('Check whether the given domain is compliant with the specific requirements of this solver type (i.e. the\nones in addition to "domain requirements").')]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._check_domain()")]),e._v(". It focuses on specific checks, as\nopposed to taking also into account the domain requirements for the latter.")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the specific requirements of this solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"cleanup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cleanup"}},[e._v("#")]),e._v(" _cleanup "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_cleanup",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs cleanup code here, or code to be executed at the exit of a\n'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements-2"}},[e._v("#")]),e._v(" _get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"initialize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize"}},[e._v("#")]),e._v(" _initialize "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_initialize",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs long-lasting initialization code here, or code to be executed at the\nentering of a 'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-2"}},[e._v("#")]),e._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"load-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#load-2"}},[e._v("#")]),e._v(" _load "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}]}}}),e._v(" "),a("p",[e._v("Restore the solver state from given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path where the solver state was saved.")]),e._v(" "),a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),e._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[e._v("#")]),e._v(" _reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-2"}},[e._v("#")]),e._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"save-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-2"}},[e._v("#")]),e._v(" _save "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),e._v(" "),a("p",[e._v("Save the solver state to given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path to store the saved state.")])]),e._v(" "),a("h3",{attrs:{id:"solve-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-2"}},[e._v("#")]),e._v(" _solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve_domain()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-domain"}},[e._v("#")]),e._v(" _solve_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_domain",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._solve()")]),e._v(", the difference being that the domain factory\nhere returns domains auto-cast to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (auto-cast to expected level).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from-2"}},[e._v("#")]),e._v(" _solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/101.af65cdb6.js b/assets/js/101.2ba44b70.js similarity index 90% rename from assets/js/101.af65cdb6.js rename to assets/js/101.2ba44b70.js index 6b8f2c6487..eebbe8415a 100644 --- a/assets/js/101.af65cdb6.js +++ b/assets/js/101.2ba44b70.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{617:function(t,s,i){"use strict";i.r(s);var r=i(38),e=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-riw-riw"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-riw-riw"}},[this._v("#")]),this._v(" hub.solver.riw.riw")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{613:function(t,s,i){"use strict";i.r(s);var r=i(38),e=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-riw-riw"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-riw-riw"}},[this._v("#")]),this._v(" hub.solver.riw.riw")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/102.9c488646.js b/assets/js/102.88ded8f7.js similarity index 92% rename from assets/js/102.9c488646.js rename to assets/js/102.88ded8f7.js index f893332f8f..b1bd5ceca4 100644 --- a/assets/js/102.9c488646.js +++ b/assets/js/102.88ded8f7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{618:function(s,t,e){"use strict";e.r(t);var i=e(38),o=Object(i.a)({},(function(){var s=this,t=s.$createElement,e=s._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-sgs-policies-sgs-policies"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-sgs-policies-sgs-policies"}},[s._v("#")]),s._v(" hub.solver.sgs_policies.sgs_policies")]),s._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[s._v("Domain specification")]),s._v(" "),e("skdecide-summary")],1),s._v(" "),e("h2",{attrs:{id:"basepolicymethod"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#basepolicymethod"}},[s._v("#")]),s._v(" BasePolicyMethod")]),s._v(" "),e("p",[s._v("An enumeration.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{614:function(s,t,e){"use strict";e.r(t);var i=e(38),o=Object(i.a)({},(function(){var s=this,t=s.$createElement,e=s._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-sgs-policies-sgs-policies"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-sgs-policies-sgs-policies"}},[s._v("#")]),s._v(" hub.solver.sgs_policies.sgs_policies")]),s._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[s._v("Domain specification")]),s._v(" "),e("skdecide-summary")],1),s._v(" "),e("h2",{attrs:{id:"basepolicymethod"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#basepolicymethod"}},[s._v("#")]),s._v(" BasePolicyMethod")]),s._v(" "),e("p",[s._v("An enumeration.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/103.22f8a3d9.js b/assets/js/103.2a5ca6a9.js similarity index 90% rename from assets/js/103.22f8a3d9.js rename to assets/js/103.2a5ca6a9.js index e90473038d..6ff24487f6 100644 --- a/assets/js/103.22f8a3d9.js +++ b/assets/js/103.2a5ca6a9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{619:function(s,e,t){"use strict";t.r(e);var i=t(38),l=Object(i.a)({},(function(){var s=this.$createElement,e=this._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-simple-greedy-simple-greedy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-simple-greedy-simple-greedy"}},[this._v("#")]),this._v(" hub.solver.simple_greedy.simple_greedy")]),this._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),e("skdecide-summary")],1)])}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{615:function(s,e,t){"use strict";t.r(e);var i=t(38),l=Object(i.a)({},(function(){var s=this.$createElement,e=this._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-simple-greedy-simple-greedy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-simple-greedy-simple-greedy"}},[this._v("#")]),this._v(" hub.solver.simple_greedy.simple_greedy")]),this._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),e("skdecide-summary")],1)])}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/104.ba672a67.js b/assets/js/104.d528b5f4.js similarity index 99% rename from assets/js/104.ba672a67.js rename to assets/js/104.d528b5f4.js index c17d9d2a6a..20e657351c 100644 --- a/assets/js/104.ba672a67.js +++ b/assets/js/104.d528b5f4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{620:function(e,t,a){"use strict";a.r(t);var s=a(38),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"hub-solver-stable-baselines-stable-baselines"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-stable-baselines-stable-baselines"}},[e._v("#")]),e._v(" hub.solver.stable_baselines.stable_baselines")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"stablebaseline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stablebaseline"}},[e._v("#")]),e._v(" StableBaseline")]),e._v(" "),a("p",[e._v("This class wraps a stable OpenAI Baselines solver (stable_baselines3) as a scikit-decide solver.")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("Using this class requires Stable Baselines 3 to be installed.")])]),e._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[e._v("#")]),e._v(" Constructor "),a("Badge",{attrs:{text:"StableBaseline",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"StableBaseline",sig:{params:[{name:"algo_class",annotation:"type"},{name:"baselines_policy",annotation:"Any"},{name:"learn_config",default:"None",annotation:"Dict"},{name:"**kwargs",annotation:"Any"}],return:"None"}}}),e._v(" "),a("p",[e._v("Initialize StableBaselines.")]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("algo_class")]),e._v(": The class of Baselines solver (stable_baselines3) to wrap.")]),e._v(" "),a("li",[a("strong",[e._v("baselines_policy")]),e._v(": The class of Baselines policy network (stable_baselines3.common.policies or str) to use.")])]),e._v(" "),a("h3",{attrs:{id:"check-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain"}},[e._v("#")]),e._v(" check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements"}},[e._v("#")]),e._v(" get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for"}},[e._v("#")]),e._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"load"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#load"}},[e._v("#")]),e._v(" load "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Restore the solver state from given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path where the solver state was saved.")]),e._v(" "),a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),e._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[e._v("#")]),e._v(" reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action"}},[e._v("#")]),e._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"save"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[e._v("#")]),e._v(" save "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),e._v(" "),a("p",[e._v("Save the solver state to given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path to store the saved state.")])]),e._v(" "),a("h3",{attrs:{id:"solve"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve"}},[e._v("#")]),e._v(" solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from"}},[e._v("#")]),e._v(" solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"check-domain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-2"}},[e._v("#")]),e._v(" _check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define specific\nchecks in addition to the "domain requirements"). The boilerplate code automatically checks whether all domain\nrequirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"check-domain-additional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-additional"}},[e._v("#")]),e._v(" _check_domain_additional "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain_additional",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v('Check whether the given domain is compliant with the specific requirements of this solver type (i.e. the\nones in addition to "domain requirements").')]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._check_domain()")]),e._v(". It focuses on specific checks, as\nopposed to taking also into account the domain requirements for the latter.")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the specific requirements of this solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"cleanup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cleanup"}},[e._v("#")]),e._v(" _cleanup "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_cleanup",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs cleanup code here, or code to be executed at the exit of a\n'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements-2"}},[e._v("#")]),e._v(" _get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"initialize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize"}},[e._v("#")]),e._v(" _initialize "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_initialize",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs long-lasting initialization code here, or code to be executed at the\nentering of a 'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-2"}},[e._v("#")]),e._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"load-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#load-2"}},[e._v("#")]),e._v(" _load "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}]}}}),e._v(" "),a("p",[e._v("Restore the solver state from given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path where the solver state was saved.")]),e._v(" "),a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),e._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[e._v("#")]),e._v(" _reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-2"}},[e._v("#")]),e._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"save-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-2"}},[e._v("#")]),e._v(" _save "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),e._v(" "),a("p",[e._v("Save the solver state to given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path to store the saved state.")])]),e._v(" "),a("h3",{attrs:{id:"solve-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-2"}},[e._v("#")]),e._v(" _solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve_domain()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-domain"}},[e._v("#")]),e._v(" _solve_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_domain",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._solve()")]),e._v(", the difference being that the domain factory\nhere returns domains auto-cast to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (auto-cast to expected level).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from-2"}},[e._v("#")]),e._v(" _solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{616:function(e,t,a){"use strict";a.r(t);var s=a(38),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"hub-solver-stable-baselines-stable-baselines"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-stable-baselines-stable-baselines"}},[e._v("#")]),e._v(" hub.solver.stable_baselines.stable_baselines")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"stablebaseline"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stablebaseline"}},[e._v("#")]),e._v(" StableBaseline")]),e._v(" "),a("p",[e._v("This class wraps a stable OpenAI Baselines solver (stable_baselines3) as a scikit-decide solver.")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("Using this class requires Stable Baselines 3 to be installed.")])]),e._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[e._v("#")]),e._v(" Constructor "),a("Badge",{attrs:{text:"StableBaseline",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"StableBaseline",sig:{params:[{name:"algo_class",annotation:"type"},{name:"baselines_policy",annotation:"Any"},{name:"learn_config",default:"None",annotation:"Dict"},{name:"**kwargs",annotation:"Any"}],return:"None"}}}),e._v(" "),a("p",[e._v("Initialize StableBaselines.")]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("algo_class")]),e._v(": The class of Baselines solver (stable_baselines3) to wrap.")]),e._v(" "),a("li",[a("strong",[e._v("baselines_policy")]),e._v(": The class of Baselines policy network (stable_baselines3.common.policies or str) to use.")])]),e._v(" "),a("h3",{attrs:{id:"check-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain"}},[e._v("#")]),e._v(" check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements"}},[e._v("#")]),e._v(" get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for"}},[e._v("#")]),e._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"load"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#load"}},[e._v("#")]),e._v(" load "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Restore the solver state from given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path where the solver state was saved.")]),e._v(" "),a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),e._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[e._v("#")]),e._v(" reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action"}},[e._v("#")]),e._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"save"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[e._v("#")]),e._v(" save "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),e._v(" "),a("p",[e._v("Save the solver state to given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path to store the saved state.")])]),e._v(" "),a("h3",{attrs:{id:"solve"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve"}},[e._v("#")]),e._v(" solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from"}},[e._v("#")]),e._v(" solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"check-domain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-2"}},[e._v("#")]),e._v(" _check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define specific\nchecks in addition to the "domain requirements"). The boilerplate code automatically checks whether all domain\nrequirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"check-domain-additional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-additional"}},[e._v("#")]),e._v(" _check_domain_additional "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain_additional",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v('Check whether the given domain is compliant with the specific requirements of this solver type (i.e. the\nones in addition to "domain requirements").')]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._check_domain()")]),e._v(". It focuses on specific checks, as\nopposed to taking also into account the domain requirements for the latter.")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the specific requirements of this solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"cleanup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cleanup"}},[e._v("#")]),e._v(" _cleanup "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_cleanup",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs cleanup code here, or code to be executed at the exit of a\n'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements-2"}},[e._v("#")]),e._v(" _get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"initialize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize"}},[e._v("#")]),e._v(" _initialize "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_initialize",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs long-lasting initialization code here, or code to be executed at the\nentering of a 'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-2"}},[e._v("#")]),e._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"load-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#load-2"}},[e._v("#")]),e._v(" _load "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}]}}}),e._v(" "),a("p",[e._v("Restore the solver state from given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path where the solver state was saved.")]),e._v(" "),a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),e._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[e._v("#")]),e._v(" _reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-2"}},[e._v("#")]),e._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"save-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#save-2"}},[e._v("#")]),e._v(" _save "),a("Badge",{attrs:{text:"Restorable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),e._v(" "),a("p",[e._v("Save the solver state to given path.")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("path")]),e._v(": The path to store the saved state.")])]),e._v(" "),a("h3",{attrs:{id:"solve-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-2"}},[e._v("#")]),e._v(" _solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve_domain()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-domain"}},[e._v("#")]),e._v(" _solve_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_domain",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._solve()")]),e._v(", the difference being that the domain factory\nhere returns domains auto-cast to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (auto-cast to expected level).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from-2"}},[e._v("#")]),e._v(" _solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/105.26726e67.js b/assets/js/105.8797ade9.js similarity index 99% rename from assets/js/105.26726e67.js rename to assets/js/105.8797ade9.js index 36e128508e..c56724896f 100644 --- a/assets/js/105.26726e67.js +++ b/assets/js/105.8797ade9.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{621:function(a,e,t){"use strict";t.r(e);var s=t(38),r=Object(s.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"hub-space-gym-gym"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-space-gym-gym"}},[a._v("#")]),a._v(" hub.space.gym.gym")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("Domain specification")]),a._v(" "),t("skdecide-summary")],1),a._v(" "),t("h2",{attrs:{id:"gymspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gymspace"}},[a._v("#")]),a._v(" GymSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym space (gym.spaces) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"GymSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"GymSpace",sig:{params:[{name:"gym_space",annotation:"gym.Space"}],return:"None"}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"boxspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#boxspace"}},[a._v("#")]),a._v(" BoxSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym Box space (gym.spaces.Box) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"BoxSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"BoxSpace",sig:{params:[{name:"low"},{name:"high"},{name:"shape",default:"None"},{name:"dtype",default:""}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-2"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-2"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-2"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-2"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"discretespace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#discretespace"}},[a._v("#")]),a._v(" DiscreteSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym Discrete space (gym.spaces.Discrete) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"DiscreteSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"DiscreteSpace",sig:{params:[{name:"n"}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-3"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-3"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-3"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-3"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"multidiscretespace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#multidiscretespace"}},[a._v("#")]),a._v(" MultiDiscreteSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym MultiDiscrete space (gym.spaces.MultiDiscrete) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-4"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"MultiDiscreteSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"MultiDiscreteSpace",sig:{params:[{name:"nvec"}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-4"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-4"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-4"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-4"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"multibinaryspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#multibinaryspace"}},[a._v("#")]),a._v(" MultiBinarySpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym MultiBinary space (gym.spaces.MultiBinary) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-5"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"MultiBinarySpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"MultiBinarySpace",sig:{params:[{name:"n"}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-5"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-5"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-5"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-5"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-5"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"tuplespace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tuplespace"}},[a._v("#")]),a._v(" TupleSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym Tuple space (gym.spaces.Tuple) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-6"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"TupleSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"TupleSpace",sig:{params:[{name:"spaces"}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-6"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-6"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-6"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-6"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-6"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"dictspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dictspace"}},[a._v("#")]),a._v(" DictSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym Dict space (gym.spaces.Dict) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-7"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"DictSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"DictSpace",sig:{params:[{name:"spaces",default:"None"},{name:"**spaces_kwargs"}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-7"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-7"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-7"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-7"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-7"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"enumspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enumspace"}},[a._v("#")]),a._v(" EnumSpace")]),a._v(" "),t("p",[a._v("This class creates an OpenAI Gym Discrete space (gym.spaces.Discrete) from an enumeration and wraps it as a\nscikit-decide enumerable space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-8"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"EnumSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"EnumSpace",sig:{params:[{name:"enum_class",annotation:"EnumMeta"}],return:"None"}}}),a._v(" "),t("p",[a._v("Initialize EnumSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("enum_class")]),a._v(": The enumeration class for creating the Gym Discrete space (gym.spaces.Discrete) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-8"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-8"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"get-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-elements"}},[a._v("#")]),a._v(" get_elements "),t("Badge",{attrs:{text:"EnumerableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"get_elements",sig:{params:[{name:"self"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Get the elements of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The elements of this space.")]),a._v(" "),t("h3",{attrs:{id:"sample-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-8"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-8"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-8"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym_spaces.Discrete"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym Discrete space (gym.spaces.Discrete) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym Discrete space created from the enumeration.")]),a._v(" "),t("h2",{attrs:{id:"listspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#listspace"}},[a._v("#")]),a._v(" ListSpace")]),a._v(" "),t("p",[a._v("This class creates an OpenAI Gym Discrete space (gym.spaces.Discrete) from a list of elements and wraps it as a\nscikit-decide enumerable space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-9"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"ListSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"ListSpace",sig:{params:[{name:"elements",annotation:"Iterable[T]"}],return:"None"}}}),a._v(" "),t("p",[a._v("Initialize ListSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("elements")]),a._v(": The list of elements for creating the Gym Discrete space (gym.spaces.Discrete) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-9"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-9"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"get-elements-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-elements-2"}},[a._v("#")]),a._v(" get_elements "),t("Badge",{attrs:{text:"EnumerableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"get_elements",sig:{params:[{name:"self"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Get the elements of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-44"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The elements of this space.")]),a._v(" "),t("h3",{attrs:{id:"sample-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-9"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-45"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-9"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-46"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-9"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym_spaces.Discrete"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym Discrete space (gym.spaces.Discrete) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-47"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym Discrete space created from the list.")]),a._v(" "),t("h2",{attrs:{id:"dataspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dataspace"}},[a._v("#")]),a._v(" DataSpace")]),a._v(" "),t("p",[a._v("This class creates an OpenAI Gym Dict space (gym.spaces.Dict) from a dataclass and wraps it as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-10"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"DataSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"DataSpace",sig:{params:[{name:"data_class",annotation:"type"},{name:"spaces",annotation:"Union[Dict[str, gym.Space], List[Tuple[str, gym.Space]]]"}],return:"None"}}}),a._v(" "),t("p",[a._v("Initialize DataSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("data_class")]),a._v(": The dataclass for creating the Gym Dict space (gym.spaces.Dict) to wrap.")]),a._v(" "),t("li",[t("strong",[a._v("spaces")]),a._v(": The spaces description passed to the created Dict space (see gym.spaces.Dict constructor documentation).")])]),a._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[a._v("#")]),a._v(" Example")]),a._v(" "),t("div",{staticClass:"language-python extra-class"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("from")]),a._v(" skdecide"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("wrappers"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("space "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("import")]),a._v(" DataSpace\n\n"),t("span",{pre:!0,attrs:{class:"token decorator annotation punctuation"}},[a._v("@dataclass")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("frozen"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("True")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Action")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n position"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[a._v("int")]),a._v("\n velocity"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[a._v("int")]),a._v("\n\nmy_action_space "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" DataSpace"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("Action"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('"position"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" gym"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("spaces"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("Discrete"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('"velocity"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" gym"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("spaces"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("Discrete"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("3")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),t("h3",{attrs:{id:"contains-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-10"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-48"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-10"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-49"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-10"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-50"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-10"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-51"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-10"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym_spaces.Dict"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym Dict space (gym.spaces.Dict) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-52"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-52"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym Dict space created from the dataclass.")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{617:function(a,e,t){"use strict";t.r(e);var s=t(38),r=Object(s.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"hub-space-gym-gym"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-space-gym-gym"}},[a._v("#")]),a._v(" hub.space.gym.gym")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("Domain specification")]),a._v(" "),t("skdecide-summary")],1),a._v(" "),t("h2",{attrs:{id:"gymspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gymspace"}},[a._v("#")]),a._v(" GymSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym space (gym.spaces) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"GymSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"GymSpace",sig:{params:[{name:"gym_space",annotation:"gym.Space"}],return:"None"}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"boxspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#boxspace"}},[a._v("#")]),a._v(" BoxSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym Box space (gym.spaces.Box) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"BoxSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"BoxSpace",sig:{params:[{name:"low"},{name:"high"},{name:"shape",default:"None"},{name:"dtype",default:""}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-2"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-2"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-2"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-2"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"discretespace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#discretespace"}},[a._v("#")]),a._v(" DiscreteSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym Discrete space (gym.spaces.Discrete) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"DiscreteSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"DiscreteSpace",sig:{params:[{name:"n"}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-3"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-3"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-11"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-3"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-12"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-3"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"multidiscretespace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#multidiscretespace"}},[a._v("#")]),a._v(" MultiDiscreteSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym MultiDiscrete space (gym.spaces.MultiDiscrete) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-4"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"MultiDiscreteSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"MultiDiscreteSpace",sig:{params:[{name:"nvec"}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-13"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-4"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-14"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-4"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-15"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-4"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-16"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-4"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"multibinaryspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#multibinaryspace"}},[a._v("#")]),a._v(" MultiBinarySpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym MultiBinary space (gym.spaces.MultiBinary) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-5"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"MultiBinarySpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"MultiBinarySpace",sig:{params:[{name:"n"}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-17"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-5"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-18"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-5"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-19"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-5"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-5"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-20"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-5"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"tuplespace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tuplespace"}},[a._v("#")]),a._v(" TupleSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym Tuple space (gym.spaces.Tuple) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-6"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"TupleSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"TupleSpace",sig:{params:[{name:"spaces"}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-21"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-6"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-22"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-6"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-23"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-6"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-6"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-24"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-6"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-6"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"dictspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dictspace"}},[a._v("#")]),a._v(" DictSpace")]),a._v(" "),t("p",[a._v("This class wraps an OpenAI Gym Dict space (gym.spaces.Dict) as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-7"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"DictSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"DictSpace",sig:{params:[{name:"spaces",default:"None"},{name:"**spaces_kwargs"}]}}}),a._v(" "),t("p",[a._v("Initialize GymSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-25"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("gym_space")]),a._v(": The Gym space (gym.spaces) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-7"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-26"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-7"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-27"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-7"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-7"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-28"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-7"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym.Space"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym space (gym.spaces) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym space.")]),a._v(" "),t("h2",{attrs:{id:"enumspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#enumspace"}},[a._v("#")]),a._v(" EnumSpace")]),a._v(" "),t("p",[a._v("This class creates an OpenAI Gym Discrete space (gym.spaces.Discrete) from an enumeration and wraps it as a\nscikit-decide enumerable space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-8"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"EnumSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"EnumSpace",sig:{params:[{name:"enum_class",annotation:"EnumMeta"}],return:"None"}}}),a._v(" "),t("p",[a._v("Initialize EnumSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-29"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("enum_class")]),a._v(": The enumeration class for creating the Gym Discrete space (gym.spaces.Discrete) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-8"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-30"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-8"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-31"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"get-elements"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-elements"}},[a._v("#")]),a._v(" get_elements "),t("Badge",{attrs:{text:"EnumerableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"get_elements",sig:{params:[{name:"self"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Get the elements of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The elements of this space.")]),a._v(" "),t("h3",{attrs:{id:"sample-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-8"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-8"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-32"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-8"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-8"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym_spaces.Discrete"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym Discrete space (gym.spaces.Discrete) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-41"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym Discrete space created from the enumeration.")]),a._v(" "),t("h2",{attrs:{id:"listspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#listspace"}},[a._v("#")]),a._v(" ListSpace")]),a._v(" "),t("p",[a._v("This class creates an OpenAI Gym Discrete space (gym.spaces.Discrete) from a list of elements and wraps it as a\nscikit-decide enumerable space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-9"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"ListSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"ListSpace",sig:{params:[{name:"elements",annotation:"Iterable[T]"}],return:"None"}}}),a._v(" "),t("p",[a._v("Initialize ListSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-33"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("elements")]),a._v(": The list of elements for creating the Gym Discrete space (gym.spaces.Discrete) to wrap.")])]),a._v(" "),t("h3",{attrs:{id:"contains-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-9"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-34"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-42"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-9"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-35"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-43"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"get-elements-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-elements-2"}},[a._v("#")]),a._v(" get_elements "),t("Badge",{attrs:{text:"EnumerableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"get_elements",sig:{params:[{name:"self"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Get the elements of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-44"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The elements of this space.")]),a._v(" "),t("h3",{attrs:{id:"sample-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-9"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-45"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-9"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-36"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-46"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-9"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-9"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym_spaces.Discrete"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym Discrete space (gym.spaces.Discrete) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-47"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym Discrete space created from the list.")]),a._v(" "),t("h2",{attrs:{id:"dataspace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#dataspace"}},[a._v("#")]),a._v(" DataSpace")]),a._v(" "),t("p",[a._v("This class creates an OpenAI Gym Dict space (gym.spaces.Dict) from a dataclass and wraps it as a scikit-decide space.")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Using this class requires OpenAI Gym to be installed.")])]),a._v(" "),t("h3",{attrs:{id:"constructor-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor-10"}},[a._v("#")]),a._v(" Constructor "),t("Badge",{attrs:{text:"DataSpace",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"DataSpace",sig:{params:[{name:"data_class",annotation:"type"},{name:"spaces",annotation:"Union[Dict[str, gym.Space], List[Tuple[str, gym.Space]]]"}],return:"None"}}}),a._v(" "),t("p",[a._v("Initialize DataSpace.")]),a._v(" "),t("h4",{attrs:{id:"parameters-37"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("data_class")]),a._v(": The dataclass for creating the Gym Dict space (gym.spaces.Dict) to wrap.")]),a._v(" "),t("li",[t("strong",[a._v("spaces")]),a._v(": The spaces description passed to the created Dict space (see gym.spaces.Dict constructor documentation).")])]),a._v(" "),t("h4",{attrs:{id:"example"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[a._v("#")]),a._v(" Example")]),a._v(" "),t("div",{staticClass:"language-python extra-class"},[t("pre",{pre:!0,attrs:{class:"language-python"}},[t("code",[t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("from")]),a._v(" skdecide"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("wrappers"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("space "),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("import")]),a._v(" DataSpace\n\n"),t("span",{pre:!0,attrs:{class:"token decorator annotation punctuation"}},[a._v("@dataclass")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("frozen"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token boolean"}},[a._v("True")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("class")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token class-name"}},[a._v("Action")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n position"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[a._v("int")]),a._v("\n velocity"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token builtin"}},[a._v("int")]),a._v("\n\nmy_action_space "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v(" DataSpace"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),a._v("Action"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('"position"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" gym"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("spaces"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("Discrete"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("2")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(",")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('"velocity"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" gym"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("spaces"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("Discrete"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("(")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("3")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(")")]),a._v("\n")])])]),t("h3",{attrs:{id:"contains-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contains-10"}},[a._v("#")]),a._v(" contains "),t("Badge",{attrs:{text:"Space",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check whether x is a valid member of this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-38"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("x")]),a._v(": The member to consider.")])]),a._v(" "),t("h4",{attrs:{id:"returns-48"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if x is a valid member of this space (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"from-jsonable-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable-10"}},[a._v("#")]),a._v(" from_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),a._v(" "),t("p",[a._v("Convert a JSONable data type to a batch of samples from this space.")]),a._v(" "),t("h4",{attrs:{id:"parameters-39"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The JSONable data type to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-49"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting batch of samples.")]),a._v(" "),t("h3",{attrs:{id:"sample-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#sample-10"}},[a._v("#")]),a._v(" sample "),t("Badge",{attrs:{text:"SamplableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),a._v(" "),t("p",[a._v("Uniformly randomly sample a random element of this space.")]),a._v(" "),t("h4",{attrs:{id:"returns-50"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The sampled element.")]),a._v(" "),t("h3",{attrs:{id:"to-jsonable-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable-10"}},[a._v("#")]),a._v(" to_jsonable "),t("Badge",{attrs:{text:"SerializableSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),a._v(" "),t("p",[a._v("Convert a batch of samples from this space to a JSONable data type.")]),a._v(" "),t("h4",{attrs:{id:"parameters-40"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("sample_n")]),a._v(": The batch of samples to convert.")])]),a._v(" "),t("h4",{attrs:{id:"returns-51"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The resulting JSONable data type.")]),a._v(" "),t("h3",{attrs:{id:"unwrapped-10"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-10"}},[a._v("#")]),a._v(" unwrapped "),t("Badge",{attrs:{text:"GymSpace",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}],return:"gym_spaces.Dict"}}}),a._v(" "),t("p",[a._v("Unwrap the Gym Dict space (gym.spaces.Dict) and return it.")]),a._v(" "),t("h4",{attrs:{id:"returns-52"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-52"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("The original Gym Dict space created from the dataclass.")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/106.86595868.js b/assets/js/106.69fdf1bc.js similarity index 99% rename from assets/js/106.86595868.js rename to assets/js/106.69fdf1bc.js index 657c5140f4..1e01d642a0 100644 --- a/assets/js/106.86595868.js +++ b/assets/js/106.69fdf1bc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{622:function(e,t,a){"use strict";a.r(t);var s=a(38),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"solvers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solvers"}},[e._v("#")]),e._v(" solvers")]),e._v(" "),a("p",[e._v("This module contains base classes for quickly building solvers.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"solver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solver"}},[e._v("#")]),e._v(" Solver")]),e._v(" "),a("p",[e._v("This is the highest level solver class (inheriting top-level class for each mandatory solver characteristic).")]),e._v(" "),a("p",[e._v("This helper class can be used as the main base class for solvers.")]),e._v(" "),a("p",[e._v("Typical use:")]),e._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("MySolver")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("Solver"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("p",[e._v('with "..." replaced when needed by a number of classes from following domain characteristics (the ones in\nparentheses are optional):')]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("(assessability)")]),e._v(": Utilities -> QValues")]),e._v(" "),a("li",[a("strong",[e._v("(policy)")]),e._v(": Policies -> UncertainPolicies -> DeterministicPolicies")]),e._v(" "),a("li",[a("strong",[e._v("(restorability)")]),e._v(": Restorable")])]),e._v(" "),a("h3",{attrs:{id:"check-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain"}},[e._v("#")]),e._v(" check_domain "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements"}},[e._v("#")]),e._v(" get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[e._v("#")]),e._v(" reset "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"solve"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve"}},[e._v("#")]),e._v(" solve "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from"}},[e._v("#")]),e._v(" solve_from "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"check-domain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-2"}},[e._v("#")]),e._v(" _check_domain "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define specific\nchecks in addition to the "domain requirements"). The boilerplate code automatically checks whether all domain\nrequirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"check-domain-additional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-additional"}},[e._v("#")]),e._v(" _check_domain_additional "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain_additional",sig:{params:[{name:"domain",annotation:"D"}],return:"bool"}}}),e._v(" "),a("p",[e._v('Check whether the given domain is compliant with the specific requirements of this solver type (i.e. the\nones in addition to "domain requirements").')]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._check_domain()")]),e._v(". It focuses on specific checks, as\nopposed to taking also into account the domain requirements for the latter.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the specific requirements of this solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"cleanup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cleanup"}},[e._v("#")]),e._v(" _cleanup "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_cleanup",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs cleanup code here, or code to be executed at the exit of a\n'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements-2"}},[e._v("#")]),e._v(" _get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"initialize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize"}},[e._v("#")]),e._v(" _initialize "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_initialize",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs long-lasting initialization code here, or code to be executed at the\nentering of a 'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[e._v("#")]),e._v(" _reset "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"solve-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-2"}},[e._v("#")]),e._v(" _solve "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve_domain()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-domain"}},[e._v("#")]),e._v(" _solve_domain "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_domain",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._solve()")]),e._v(", the difference being that the domain factory\nhere returns domains auto-cast to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (auto-cast to expected level).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from-2"}},[e._v("#")]),e._v(" _solve_from "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h2",{attrs:{id:"deterministicpolicysolver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicpolicysolver"}},[e._v("#")]),e._v(" DeterministicPolicySolver")]),e._v(" "),a("p",[e._v("This is a typical deterministic policy solver class.")]),e._v(" "),a("p",[e._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),e._v(" "),a("ul",[a("li",[e._v("Solver")]),e._v(" "),a("li",[e._v("DeterministicPolicies")])]),e._v(" "),a("p",[e._v("Typical use:")]),e._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("MySolver")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("DeterministicPolicySolver"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("It is also possible to refine any alternate base class, like for instance:")]),e._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("MySolver")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("DeterministicPolicySolver"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" QValues"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])])]),e._v(" "),a("h3",{attrs:{id:"check-domain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-3"}},[e._v("#")]),e._v(" check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements-3"}},[e._v("#")]),e._v(" get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"get-next-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action"}},[e._v("#")]),e._v(" get_next_action "),a("Badge",{attrs:{text:"DeterministicPolicies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_next_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the next deterministic action (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which next action is requested.")])]),e._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The next deterministic action.")]),e._v(" "),a("h3",{attrs:{id:"get-next-action-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution"}},[e._v("#")]),e._v(" get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),e._v(" "),a("p",[e._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The probabilistic distribution of next action.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for"}},[e._v("#")]),e._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-3"}},[e._v("#")]),e._v(" reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action"}},[e._v("#")]),e._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"solve-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-3"}},[e._v("#")]),e._v(" solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from-3"}},[e._v("#")]),e._v(" solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"check-domain-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-4"}},[e._v("#")]),e._v(" _check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define specific\nchecks in addition to the "domain requirements"). The boilerplate code automatically checks whether all domain\nrequirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"check-domain-additional-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-additional-2"}},[e._v("#")]),e._v(" _check_domain_additional "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain_additional",sig:{params:[{name:"domain",annotation:"D"}],return:"bool"}}}),e._v(" "),a("p",[e._v('Check whether the given domain is compliant with the specific requirements of this solver type (i.e. the\nones in addition to "domain requirements").')]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._check_domain()")]),e._v(". It focuses on specific checks, as\nopposed to taking also into account the domain requirements for the latter.")]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the specific requirements of this solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"cleanup-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cleanup-2"}},[e._v("#")]),e._v(" _cleanup "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_cleanup",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs cleanup code here, or code to be executed at the exit of a\n'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements-4"}},[e._v("#")]),e._v(" _get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"get-next-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-2"}},[e._v("#")]),e._v(" _get_next_action "),a("Badge",{attrs:{text:"DeterministicPolicies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the next deterministic action (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which next action is requested.")])]),e._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The next deterministic action.")]),e._v(" "),a("h3",{attrs:{id:"get-next-action-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution-2"}},[e._v("#")]),e._v(" _get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),e._v(" "),a("p",[e._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The probabilistic distribution of next action.")]),e._v(" "),a("h3",{attrs:{id:"initialize-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize-2"}},[e._v("#")]),e._v(" _initialize "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_initialize",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs long-lasting initialization code here, or code to be executed at the\nentering of a 'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-2"}},[e._v("#")]),e._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-4"}},[e._v("#")]),e._v(" _reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-2"}},[e._v("#")]),e._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"solve-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-4"}},[e._v("#")]),e._v(" _solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve_domain()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-domain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-domain-2"}},[e._v("#")]),e._v(" _solve_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_domain",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._solve()")]),e._v(", the difference being that the domain factory\nhere returns domains auto-cast to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (auto-cast to expected level).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from-4"}},[e._v("#")]),e._v(" _solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{618:function(e,t,a){"use strict";a.r(t);var s=a(38),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"solvers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solvers"}},[e._v("#")]),e._v(" solvers")]),e._v(" "),a("p",[e._v("This module contains base classes for quickly building solvers.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"solver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solver"}},[e._v("#")]),e._v(" Solver")]),e._v(" "),a("p",[e._v("This is the highest level solver class (inheriting top-level class for each mandatory solver characteristic).")]),e._v(" "),a("p",[e._v("This helper class can be used as the main base class for solvers.")]),e._v(" "),a("p",[e._v("Typical use:")]),e._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("MySolver")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("Solver"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("p",[e._v('with "..." replaced when needed by a number of classes from following domain characteristics (the ones in\nparentheses are optional):')]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("(assessability)")]),e._v(": Utilities -> QValues")]),e._v(" "),a("li",[a("strong",[e._v("(policy)")]),e._v(": Policies -> UncertainPolicies -> DeterministicPolicies")]),e._v(" "),a("li",[a("strong",[e._v("(restorability)")]),e._v(": Restorable")])]),e._v(" "),a("h3",{attrs:{id:"check-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain"}},[e._v("#")]),e._v(" check_domain "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements"}},[e._v("#")]),e._v(" get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[e._v("#")]),e._v(" reset "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"solve"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve"}},[e._v("#")]),e._v(" solve "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from"}},[e._v("#")]),e._v(" solve_from "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"check-domain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-2"}},[e._v("#")]),e._v(" _check_domain "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define specific\nchecks in addition to the "domain requirements"). The boilerplate code automatically checks whether all domain\nrequirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"check-domain-additional"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-additional"}},[e._v("#")]),e._v(" _check_domain_additional "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain_additional",sig:{params:[{name:"domain",annotation:"D"}],return:"bool"}}}),e._v(" "),a("p",[e._v('Check whether the given domain is compliant with the specific requirements of this solver type (i.e. the\nones in addition to "domain requirements").')]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._check_domain()")]),e._v(". It focuses on specific checks, as\nopposed to taking also into account the domain requirements for the latter.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the specific requirements of this solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"cleanup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cleanup"}},[e._v("#")]),e._v(" _cleanup "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_cleanup",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs cleanup code here, or code to be executed at the exit of a\n'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements-2"}},[e._v("#")]),e._v(" _get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"initialize"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize"}},[e._v("#")]),e._v(" _initialize "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_initialize",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs long-lasting initialization code here, or code to be executed at the\nentering of a 'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[e._v("#")]),e._v(" _reset "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"solve-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-2"}},[e._v("#")]),e._v(" _solve "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve_domain()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-domain"}},[e._v("#")]),e._v(" _solve_domain "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_domain",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._solve()")]),e._v(", the difference being that the domain factory\nhere returns domains auto-cast to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (auto-cast to expected level).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from-2"}},[e._v("#")]),e._v(" _solve_from "),a("Badge",{attrs:{text:"Solver",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h2",{attrs:{id:"deterministicpolicysolver"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicpolicysolver"}},[e._v("#")]),e._v(" DeterministicPolicySolver")]),e._v(" "),a("p",[e._v("This is a typical deterministic policy solver class.")]),e._v(" "),a("p",[e._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),e._v(" "),a("ul",[a("li",[e._v("Solver")]),e._v(" "),a("li",[e._v("DeterministicPolicies")])]),e._v(" "),a("p",[e._v("Typical use:")]),e._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("MySolver")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("DeterministicPolicySolver"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("It is also possible to refine any alternate base class, like for instance:")]),e._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("class")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[e._v("MySolver")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("(")]),e._v("DeterministicPolicySolver"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v(" QValues"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(")")]),e._v("\n")])])])]),e._v(" "),a("h3",{attrs:{id:"check-domain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-3"}},[e._v("#")]),e._v(" check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements-3"}},[e._v("#")]),e._v(" get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"get-next-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action"}},[e._v("#")]),e._v(" get_next_action "),a("Badge",{attrs:{text:"DeterministicPolicies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_next_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the next deterministic action (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which next action is requested.")])]),e._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The next deterministic action.")]),e._v(" "),a("h3",{attrs:{id:"get-next-action-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution"}},[e._v("#")]),e._v(" get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),e._v(" "),a("p",[e._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The probabilistic distribution of next action.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for"}},[e._v("#")]),e._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-3"}},[e._v("#")]),e._v(" reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action"}},[e._v("#")]),e._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"solve-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-3"}},[e._v("#")]),e._v(" solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver.solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from-3"}},[e._v("#")]),e._v(" solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"check-domain-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-4"}},[e._v("#")]),e._v(" _check_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain",sig:{params:[{name:"domain",annotation:"Domain"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether a domain is compliant with this solver type.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._check_domain()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Solver._check_domain_additional()")]),e._v(' (which returns True by default but can be overridden to define specific\nchecks in addition to the "domain requirements"). The boilerplate code automatically checks whether all domain\nrequirements are met.')]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"check-domain-additional-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-domain-additional-2"}},[e._v("#")]),e._v(" _check_domain_additional "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_check_domain_additional",sig:{params:[{name:"domain",annotation:"D"}],return:"bool"}}}),e._v(" "),a("p",[e._v('Check whether the given domain is compliant with the specific requirements of this solver type (i.e. the\nones in addition to "domain requirements").')]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._check_domain()")]),e._v(". It focuses on specific checks, as\nopposed to taking also into account the domain requirements for the latter.")]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain")]),e._v(": The domain to check.")])]),e._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the domain is compliant with the specific requirements of this solver type (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"cleanup-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cleanup-2"}},[e._v("#")]),e._v(" _cleanup "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_cleanup",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs cleanup code here, or code to be executed at the exit of a\n'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"get-domain-requirements-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-domain-requirements-4"}},[e._v("#")]),e._v(" _get_domain_requirements "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_domain_requirements",sig:{params:[],return:"List[type]"}}}),e._v(" "),a("p",[e._v("Get domain requirements for this solver class to be applicable.")]),e._v(" "),a("p",[e._v("Domain requirements are classes from the "),a("code",[e._v("skdecide.builders.domain")]),e._v(" package that the domain needs to inherit from.")]),e._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("A list of classes to inherit from.")]),e._v(" "),a("h3",{attrs:{id:"get-next-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-2"}},[e._v("#")]),e._v(" _get_next_action "),a("Badge",{attrs:{text:"DeterministicPolicies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the next deterministic action (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which next action is requested.")])]),e._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The next deterministic action.")]),e._v(" "),a("h3",{attrs:{id:"get-next-action-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution-2"}},[e._v("#")]),e._v(" _get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),e._v(" "),a("p",[e._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The probabilistic distribution of next action.")]),e._v(" "),a("h3",{attrs:{id:"initialize-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize-2"}},[e._v("#")]),e._v(" _initialize "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_initialize",sig:{params:[{name:"self"}]}}}),e._v(" "),a("p",[e._v("Runs long-lasting initialization code here, or code to be executed at the\nentering of a 'with' context statement.")]),e._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-2"}},[e._v("#")]),e._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Check whether the solver's current policy is defined for the given observation.")]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the policy is defined for the given observation memory (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-4"}},[e._v("#")]),e._v(" _reset "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"None"}}}),e._v(" "),a("p",[e._v("Reset whatever is needed on this solver before running a new episode.")]),e._v(" "),a("p",[e._v("This function does nothing by default but can be overridden if needed (e.g. to reset the hidden state of a LSTM\npolicy network, which carries information about past observations seen in the previous episode).")]),e._v(" "),a("h3",{attrs:{id:"sample-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-2"}},[e._v("#")]),e._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Sample an action for the given observation (from the solver's current policy).")]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("observation")]),e._v(": The observation for which an action must be sampled.")])]),e._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The sampled action.")]),e._v(" "),a("h3",{attrs:{id:"solve-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-4"}},[e._v("#")]),e._v(" _solve "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], Domain]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Solver._solve()")]),e._v(" provides some boilerplate code and internally calls "),a("code",[e._v("Solver._solve_domain()")]),e._v(". The\nboilerplate code transforms the domain factory to auto-cast the new domains to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (can be just a domain class).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-domain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-domain-2"}},[e._v("#")]),e._v(" _solve_domain "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_domain",sig:{params:[{name:"self"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process.")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Solver._solve()")]),e._v(", the difference being that the domain factory\nhere returns domains auto-cast to the level expected by the solver.")]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (auto-cast to expected level).")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])]),e._v(" "),a("h3",{attrs:{id:"solve-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-from-4"}},[e._v("#")]),e._v(" _solve_from "),a("Badge",{attrs:{text:"Solver",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_solve_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),e._v(" "),a("p",[e._v("Run the solving process from a given state.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("Create the domain first by calling the @Solver.reset() method")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The source memory (state or history) of the transition.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The nature of the solutions produced here depends on other solver's characteristics like\n"),a("code",[e._v("policy")]),e._v(" and "),a("code",[e._v("assessibility")]),e._v(".")])])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/107.6f39b6f8.js b/assets/js/107.9e81e6a8.js similarity index 99% rename from assets/js/107.6f39b6f8.js rename to assets/js/107.9e81e6a8.js index ceb4770cfd..0fbac92fd3 100644 --- a/assets/js/107.6f39b6f8.js +++ b/assets/js/107.9e81e6a8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{623:function(e,t,o){"use strict";o.r(t);var n=o(38),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"utils"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#utils"}},[e._v("#")]),e._v(" utils")]),e._v(" "),o("p",[e._v("This module contains utility functions.")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),o("skdecide-summary")],1),e._v(" "),o("h2",{attrs:{id:"rollout"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#rollout"}},[e._v("#")]),e._v(" rollout")]),e._v(" "),o("skdecide-signature",{attrs:{name:"rollout",sig:{params:[{name:"domain",annotation:"Domain"},{name:"solver",default:"None",annotation:"Optional[Solver]"},{name:"from_memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"from_action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"},{name:"num_episodes",default:"1",annotation:"int"},{name:"max_steps",default:"None",annotation:"Optional[int]"},{name:"render",default:"True",annotation:"bool"},{name:"max_framerate",default:"None",annotation:"Optional[float]"},{name:"verbose",default:"True",annotation:"bool"},{name:"action_formatter",default:"",annotation:"Optional[Callable[[D.T_event], str]]"},{name:"outcome_formatter",default:"",annotation:"Optional[Callable[[EnvironmentOutcome], str]]"},{name:"save_result_directory",default:"None",annotation:"str"}],return:"str"}}}),e._v(" "),o("p",[e._v("This method will run one or more episodes in a domain according to the policy of a solver.")]),e._v(" "),o("h4",{attrs:{id:"parameters"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("domain")]),e._v(": The domain in which the episode(s) will be run.")]),e._v(" "),o("li",[o("strong",[e._v("solver")]),e._v(": The solver whose policy will select actions to take (if None, a random policy is used).")]),e._v(" "),o("li",[o("strong",[e._v("from_memory")]),e._v(": The memory or state to consider as rollout starting point (if None, the domain is reset first).")]),e._v(" "),o("li",[o("strong",[e._v("from_action")]),e._v(": The last applied action when from_memory is used (if necessary for initial observation computation).")]),e._v(" "),o("li",[o("strong",[e._v("num_episodes")]),e._v(": The number of episodes to run.")]),e._v(" "),o("li",[o("strong",[e._v("max_steps")]),e._v(": The maximum number of steps for each episode (if None, no limit is set).")]),e._v(" "),o("li",[o("strong",[e._v("render")]),e._v(": Whether to render the episode(s) during rollout if the domain is renderable.")]),e._v(" "),o("li",[o("strong",[e._v("max_framerate")]),e._v(": The maximum number of steps/renders per second (if None, steps/renders are never slowed down).")]),e._v(" "),o("li",[o("strong",[e._v("verbose")]),e._v(": Whether to print information to the console during rollout.")]),e._v(" "),o("li",[o("strong",[e._v("action_formatter")]),e._v(": The function transforming actions in the string to print (if None, no print).")]),e._v(" "),o("li",[o("strong",[e._v("outcome_formatter")]),e._v(": The function transforming EnvironmentOutcome objects in the string to print (if None, no print).")]),e._v(" "),o("li",[o("strong",[e._v("save_result")]),e._v(": Directory in which state visited, actions applied and Transition Value are saved to json.")])]),e._v(" "),o("h2",{attrs:{id:"rollout-episode"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#rollout-episode"}},[e._v("#")]),e._v(" rollout_episode")]),e._v(" "),o("skdecide-signature",{attrs:{name:"rollout_episode",sig:{params:[{name:"domain",annotation:"Domain"},{name:"solver",default:"None",annotation:"Optional[Union[Solver, Policies]]"},{name:"from_memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"from_action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"},{name:"num_episodes",default:"1",annotation:"int"},{name:"max_steps",default:"None",annotation:"Optional[int]"},{name:"render",default:"True",annotation:"bool"},{name:"max_framerate",default:"None",annotation:"Optional[float]"},{name:"verbose",default:"True",annotation:"bool"},{name:"action_formatter",default:"None",annotation:"Optional[Callable[[D.T_event], str]]"},{name:"outcome_formatter",default:"None",annotation:"Optional[Callable[[EnvironmentOutcome], str]]"},{name:"save_result_directory",default:"None",annotation:"str"}],return:"Tuple[List[D.T_observation], List[D.T_event], List[D.T_value]]"}}}),e._v(" "),o("p",[e._v("This method will run one or more episodes in a domain according to the policy of a solver.")]),e._v(" "),o("h4",{attrs:{id:"parameters-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("domain")]),e._v(": The domain in which the episode(s) will be run.")]),e._v(" "),o("li",[o("strong",[e._v("solver")]),e._v(": The solver whose policy will select actions to take (if None, a random policy is used).")]),e._v(" "),o("li",[o("strong",[e._v("from_memory")]),e._v(": The memory or state to consider as rollout starting point (if None, the domain is reset first).")]),e._v(" "),o("li",[o("strong",[e._v("from_action")]),e._v(": The last applied action when from_memory is used (if necessary for initial observation computation).")]),e._v(" "),o("li",[o("strong",[e._v("num_episodes")]),e._v(": The number of episodes to run.")]),e._v(" "),o("li",[o("strong",[e._v("max_steps")]),e._v(": The maximum number of steps for each episode (if None, no limit is set).")]),e._v(" "),o("li",[o("strong",[e._v("render")]),e._v(": Whether to render the episode(s) during rollout if the domain is renderable.")]),e._v(" "),o("li",[o("strong",[e._v("max_framerate")]),e._v(": The maximum number of steps/renders per second (if None, steps/renders are never slowed down).")]),e._v(" "),o("li",[o("strong",[e._v("verbose")]),e._v(": Whether to print information to the console during rollout.")]),e._v(" "),o("li",[o("strong",[e._v("action_formatter")]),e._v(": The function transforming actions in the string to print (if None, no print).")]),e._v(" "),o("li",[o("strong",[e._v("outcome_formatter")]),e._v(": The function transforming EnvironmentOutcome objects in the string to print (if None, no print).")]),e._v(" "),o("li",[o("strong",[e._v("save_result")]),e._v(": Directory in which state visited, actions applied and Transition Value are saved to json.")])])],1)}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{619:function(e,t,o){"use strict";o.r(t);var n=o(38),a=Object(n.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"utils"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#utils"}},[e._v("#")]),e._v(" utils")]),e._v(" "),o("p",[e._v("This module contains utility functions.")]),e._v(" "),o("div",{staticClass:"custom-block tip"},[o("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),o("skdecide-summary")],1),e._v(" "),o("h2",{attrs:{id:"rollout"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#rollout"}},[e._v("#")]),e._v(" rollout")]),e._v(" "),o("skdecide-signature",{attrs:{name:"rollout",sig:{params:[{name:"domain",annotation:"Domain"},{name:"solver",default:"None",annotation:"Optional[Solver]"},{name:"from_memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"from_action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"},{name:"num_episodes",default:"1",annotation:"int"},{name:"max_steps",default:"None",annotation:"Optional[int]"},{name:"render",default:"True",annotation:"bool"},{name:"max_framerate",default:"None",annotation:"Optional[float]"},{name:"verbose",default:"True",annotation:"bool"},{name:"action_formatter",default:"",annotation:"Optional[Callable[[D.T_event], str]]"},{name:"outcome_formatter",default:"",annotation:"Optional[Callable[[EnvironmentOutcome], str]]"},{name:"save_result_directory",default:"None",annotation:"str"}],return:"str"}}}),e._v(" "),o("p",[e._v("This method will run one or more episodes in a domain according to the policy of a solver.")]),e._v(" "),o("h4",{attrs:{id:"parameters"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("domain")]),e._v(": The domain in which the episode(s) will be run.")]),e._v(" "),o("li",[o("strong",[e._v("solver")]),e._v(": The solver whose policy will select actions to take (if None, a random policy is used).")]),e._v(" "),o("li",[o("strong",[e._v("from_memory")]),e._v(": The memory or state to consider as rollout starting point (if None, the domain is reset first).")]),e._v(" "),o("li",[o("strong",[e._v("from_action")]),e._v(": The last applied action when from_memory is used (if necessary for initial observation computation).")]),e._v(" "),o("li",[o("strong",[e._v("num_episodes")]),e._v(": The number of episodes to run.")]),e._v(" "),o("li",[o("strong",[e._v("max_steps")]),e._v(": The maximum number of steps for each episode (if None, no limit is set).")]),e._v(" "),o("li",[o("strong",[e._v("render")]),e._v(": Whether to render the episode(s) during rollout if the domain is renderable.")]),e._v(" "),o("li",[o("strong",[e._v("max_framerate")]),e._v(": The maximum number of steps/renders per second (if None, steps/renders are never slowed down).")]),e._v(" "),o("li",[o("strong",[e._v("verbose")]),e._v(": Whether to print information to the console during rollout.")]),e._v(" "),o("li",[o("strong",[e._v("action_formatter")]),e._v(": The function transforming actions in the string to print (if None, no print).")]),e._v(" "),o("li",[o("strong",[e._v("outcome_formatter")]),e._v(": The function transforming EnvironmentOutcome objects in the string to print (if None, no print).")]),e._v(" "),o("li",[o("strong",[e._v("save_result")]),e._v(": Directory in which state visited, actions applied and Transition Value are saved to json.")])]),e._v(" "),o("h2",{attrs:{id:"rollout-episode"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#rollout-episode"}},[e._v("#")]),e._v(" rollout_episode")]),e._v(" "),o("skdecide-signature",{attrs:{name:"rollout_episode",sig:{params:[{name:"domain",annotation:"Domain"},{name:"solver",default:"None",annotation:"Optional[Union[Solver, Policies]]"},{name:"from_memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"from_action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"},{name:"num_episodes",default:"1",annotation:"int"},{name:"max_steps",default:"None",annotation:"Optional[int]"},{name:"render",default:"True",annotation:"bool"},{name:"max_framerate",default:"None",annotation:"Optional[float]"},{name:"verbose",default:"True",annotation:"bool"},{name:"action_formatter",default:"None",annotation:"Optional[Callable[[D.T_event], str]]"},{name:"outcome_formatter",default:"None",annotation:"Optional[Callable[[EnvironmentOutcome], str]]"},{name:"save_result_directory",default:"None",annotation:"str"}],return:"Tuple[List[D.T_observation], List[D.T_event], List[D.T_value]]"}}}),e._v(" "),o("p",[e._v("This method will run one or more episodes in a domain according to the policy of a solver.")]),e._v(" "),o("h4",{attrs:{id:"parameters-2"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),o("ul",[o("li",[o("strong",[e._v("domain")]),e._v(": The domain in which the episode(s) will be run.")]),e._v(" "),o("li",[o("strong",[e._v("solver")]),e._v(": The solver whose policy will select actions to take (if None, a random policy is used).")]),e._v(" "),o("li",[o("strong",[e._v("from_memory")]),e._v(": The memory or state to consider as rollout starting point (if None, the domain is reset first).")]),e._v(" "),o("li",[o("strong",[e._v("from_action")]),e._v(": The last applied action when from_memory is used (if necessary for initial observation computation).")]),e._v(" "),o("li",[o("strong",[e._v("num_episodes")]),e._v(": The number of episodes to run.")]),e._v(" "),o("li",[o("strong",[e._v("max_steps")]),e._v(": The maximum number of steps for each episode (if None, no limit is set).")]),e._v(" "),o("li",[o("strong",[e._v("render")]),e._v(": Whether to render the episode(s) during rollout if the domain is renderable.")]),e._v(" "),o("li",[o("strong",[e._v("max_framerate")]),e._v(": The maximum number of steps/renders per second (if None, steps/renders are never slowed down).")]),e._v(" "),o("li",[o("strong",[e._v("verbose")]),e._v(": Whether to print information to the console during rollout.")]),e._v(" "),o("li",[o("strong",[e._v("action_formatter")]),e._v(": The function transforming actions in the string to print (if None, no print).")]),e._v(" "),o("li",[o("strong",[e._v("outcome_formatter")]),e._v(": The function transforming EnvironmentOutcome objects in the string to print (if None, no print).")]),e._v(" "),o("li",[o("strong",[e._v("save_result")]),e._v(": Directory in which state visited, actions applied and Transition Value are saved to json.")])])],1)}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/14.d241ed76.js b/assets/js/14.03754e01.js similarity index 94% rename from assets/js/14.d241ed76.js rename to assets/js/14.03754e01.js index 2f88cef320..7e758ac08e 100644 --- a/assets/js/14.d241ed76.js +++ b/assets/js/14.03754e01.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{587:function(t,e,s){"use strict";s.r(e);var i=s(38),a=Object(i.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"welcome-to-scikit-decide"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#welcome-to-scikit-decide"}},[t._v("#")]),t._v(" Welcome to scikit-decide")]),t._v(" "),s("h2",{attrs:{id:"what-is-it"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#what-is-it"}},[t._v("#")]),t._v(" What is it?")]),t._v(" "),s("p",[s("strong",[t._v("Scikit-decide is an AI framework for Reinforcement Learning, Automated Planning and Scheduling.")])]),t._v(" "),s("p",[t._v("This framework was initiated at "),s("a",{attrs:{href:"https://www.airbus.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("Airbus"),s("OutboundLink")],1),t._v(" AI Research.")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("Please refer to the "),s("strong",[t._v("Guide")]),t._v(" and "),s("strong",[t._v("Reference")]),t._v(" sections at the top to learn how to use scikit-decide.")])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{556:function(t,e,s){"use strict";s.r(e);var i=s(38),a=Object(i.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"welcome-to-scikit-decide"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#welcome-to-scikit-decide"}},[t._v("#")]),t._v(" Welcome to scikit-decide")]),t._v(" "),s("h2",{attrs:{id:"what-is-it"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#what-is-it"}},[t._v("#")]),t._v(" What is it?")]),t._v(" "),s("p",[s("strong",[t._v("Scikit-decide is an AI framework for Reinforcement Learning, Automated Planning and Scheduling.")])]),t._v(" "),s("p",[t._v("This framework was initiated at "),s("a",{attrs:{href:"https://www.airbus.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("Airbus"),s("OutboundLink")],1),t._v(" AI Research.")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("Please refer to the "),s("strong",[t._v("Guide")]),t._v(" and "),s("strong",[t._v("Reference")]),t._v(" sections at the top to learn how to use scikit-decide.")])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/17.89c9c195.js b/assets/js/17.bbd84e71.js similarity index 92% rename from assets/js/17.89c9c195.js rename to assets/js/17.bbd84e71.js index 418b267c06..9db363e18f 100644 --- a/assets/js/17.89c9c195.js +++ b/assets/js/17.bbd84e71.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{586:function(t,s,e){"use strict";e.r(s);var o=e(38),a=Object(o.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"code-generators"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#code-generators"}},[t._v("#")]),t._v(" Code generators")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("skdecide-codegen",{scopedSlots:t._u([{key:"SolverSummary",fn:function(){return[e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Solver specification")]),t._v(" "),e("skdecide-summary",{attrs:{isSolver:""}})],1)]},proxy:!0}])})],1)}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{620:function(t,s,e){"use strict";e.r(s);var o=e(38),a=Object(o.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"code-generators"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#code-generators"}},[t._v("#")]),t._v(" Code generators")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("skdecide-codegen",{scopedSlots:t._u([{key:"SolverSummary",fn:function(){return[e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Solver specification")]),t._v(" "),e("skdecide-summary",{attrs:{isSolver:""}})],1)]},proxy:!0}])})],1)}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/18.b5dc543d.js b/assets/js/18.6ccce1d5.js similarity index 99% rename from assets/js/18.b5dc543d.js rename to assets/js/18.6ccce1d5.js index 62f683299d..072eebd373 100644 --- a/assets/js/18.b5dc543d.js +++ b/assets/js/18.6ccce1d5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{585:function(e,t,s){"use strict";s.r(t);var a=s(38),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"contributing-to-scikit-decide"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contributing-to-scikit-decide"}},[e._v("#")]),e._v(" Contributing to scikit-decide")]),e._v(" "),s("p",[e._v("We welcome all contributions to scikit-decide.")]),e._v(" "),s("p",[e._v("You can help by:")]),e._v(" "),s("ul",[s("li",[e._v("fixing bugs (see "),s("a",{attrs:{href:"https://github.com/airbus/scikit-decide/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("issues"),s("OutboundLink")],1),e._v(' with label "bug"),')]),e._v(" "),s("li",[e._v("adding new domains or solvers to the hub in "),s("code",[e._v("skdecide/hub/")]),e._v(",")]),e._v(" "),s("li",[e._v("improving the documentation,")]),e._v(" "),s("li",[e._v("adding and improving educational notebooks in "),s("code",[e._v("notebooks/")]),e._v(".")])]),e._v(" "),s("p",[e._v("This is not exhaustive.")]),e._v(" "),s("p",[e._v("The project is hosted on "),s("a",{attrs:{href:"https://github.com/airbus/scikit-decide",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/airbus/scikit-decide"),s("OutboundLink")],1),e._v(".\nContributions to the repository are made by submitting pull requests.")]),e._v(" "),s("p",[e._v("This guide is organized as follows:")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#setting-up-your-development-environment"}},[e._v("Setting up your development environment")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#guidelines-to-follow-when-preparing-a-contribution"}},[e._v("Guidelines to follow when preparing a contribution")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#submitting-pull-requests"}},[e._v("Submitting pull requests")]),e._v(" to put your contribution in the main repository")])]),e._v(" "),s("h2",{attrs:{id:"setting-up-your-development-environment"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-your-development-environment"}},[e._v("#")]),e._v(" Setting up your development environment")]),e._v(" "),s("h3",{attrs:{id:"prerequisite-minizinc"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#prerequisite-minizinc"}},[e._v("#")]),e._v(" Prerequisite: minizinc")]),e._v(" "),s("p",[e._v("You need first to install "),s("a",{attrs:{href:"https://www.minizinc.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("minizinc"),s("OutboundLink")],1),e._v(" (version greater than 2.6) and update the "),s("code",[e._v("PATH")]),e._v(" environment variable\nso that it can be found by Python. See "),s("a",{attrs:{href:"https://www.minizinc.org/doc-latest/en/installation.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("minizinc documentation"),s("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),s("h3",{attrs:{id:"installing-from-source-in-developer-mode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#installing-from-source-in-developer-mode"}},[e._v("#")]),e._v(" Installing from source in developer mode")]),e._v(" "),s("blockquote",[s("p",[s("strong",[e._v("Disclaimer")]),e._v(": The following process has only been tested on Linux/MacOS platforms.")])]),e._v(" "),s("p",[e._v("In order to install scikit-decide from the source so that your modification to the library are taken into account, we recommmend using poetry.")]),e._v(" "),s("h4",{attrs:{id:"prerequisites-for-c"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites-for-c"}},[e._v("#")]),e._v(" Prerequisites for C++")]),e._v(" "),s("p",[e._v("To build the c++ part of the library,\nyou need a minimal environment with c++ compiler, cmake, and boost.\nTo be able to use parallelism based on openMP, you should also install libomp.\nFor instance, on macOS it is done via:")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("xcode-select --install\nbrew "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" cmake\nbrew "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" boost\nbrew "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" libomp\n")])])]),s("h4",{attrs:{id:"installation-with-pyenv-poetry"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#installation-with-pyenv-poetry"}},[e._v("#")]),e._v(" Installation with pyenv + poetry")]),e._v(" "),s("p",[e._v("Here are the steps to follow:")]),e._v(" "),s("ul",[s("li",[s("p",[e._v('Clone the source and got to the "scikit-decide" root directory.')]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone --recurse-submodules -j8 https://github.com/airbus/scikit-decide.git\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" scikit-decide\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Set proper python version (e.g. 3.8.11) for the scikit-decide project.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("pyenv "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("local")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("3.8")]),e._v(".11\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Update pip installer (the one that "),s("code",[e._v("pyenv")]),e._v(" makes you use).")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -U pip\n")])])]),s("ul",[s("li",[s("p",[e._v("Use poetry to install the project:")]),e._v(" "),s("ul",[s("li",[s("p",[e._v("Install "),s("a",{attrs:{href:"https://python-poetry.org/docs/master/#installation",target:"_blank",rel:"noopener noreferrer"}},[e._v("poetry"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py "),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" python -\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("PATH")])]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),s("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("$HOME")]),e._v("/.local/bin:"),s("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("$PATH")]),e._v('"')]),e._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# add path to poetry")]),e._v("\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Install poetry-dynamic-versioning in poetry root env")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry self "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("add")]),e._v(" poetry-dynamic-versioning\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Specify to poetry the python version to use so that it creates the appropriate virtual environment.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("env")]),e._v(" use "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("3.8")]),e._v(".11\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Preinstall gym 0.21.0 with appropriate option to avoid an error during installation\n(see this "),s("a",{attrs:{href:"https://github.com/openai/gym/issues/3176",target:"_blank",rel:"noopener noreferrer"}},[e._v("issue"),s("OutboundLink")],1),e._v("\nand this "),s("a",{attrs:{href:"https://github.com/python-poetry/poetry/issues/3433#issuecomment-840509576",target:"_blank",rel:"noopener noreferrer"}},[e._v("solution"),s("OutboundLink")],1),e._v("):")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"pip==22"')]),e._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# starting with pip 23.1, gym 0.21.0 is not intallable anymore")]),e._v("\npoetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"setuptools<67"')]),e._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# starting with setuptools 67, gym 0.21.0 is not intallable anymore")]),e._v("\npoetry run python -m pip uninstall -y wheel "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# wheel must not be here to fall back directly to python setup.py")]),e._v("\npoetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("gym")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("==")]),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("0.21")]),e._v(".0 --no-use-pep517\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Install all dependencies as defined in "),s("code",[e._v("poetry.lock")]),e._v(", build and install the c++ library.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -rf build "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# removing previous build")]),e._v("\npoetry "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --extras all\n")])])])])])])])])]),e._v(" "),s("h4",{attrs:{id:"alternate-installation-with-conda-poetry"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#alternate-installation-with-conda-poetry"}},[e._v("#")]),e._v(" Alternate installation with conda + poetry")]),e._v(" "),s("p",[e._v("You can also use conda rather than pyenv. It can be useful when you cannot install poetry via the above method,\nas it can also be installed by conda via the conda-forge channel.")]),e._v(" "),s("ul",[s("li",[s("p",[e._v('Clone the source and got to the "scikit-decide" root directory.')]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone --recurse-submodules -j8 https://github.com/airbus/scikit-decide.git\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" scikit-decide\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Create and activate a conda environment with the proper python version for the scikit-decide project.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("conda create -n test_dev_skdecide "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("python")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("3.8")]),e._v(".11\nconda activate test_dev_skdecide\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Update pip installer")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -U pip\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Install poetry in the environment")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("conda "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -c conda-forge poetry\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Install poetry-dynamic-versioning in poetry root env")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry self "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("add")]),e._v(" poetry-dynamic-versioning\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Preinstall gym 0.21.0 with appropriate option to avoid an error during installation\n(see this "),s("a",{attrs:{href:"https://github.com/openai/gym/issues/3176",target:"_blank",rel:"noopener noreferrer"}},[e._v("issue"),s("OutboundLink")],1),e._v("\nand this "),s("a",{attrs:{href:"https://github.com/python-poetry/poetry/issues/3433#issuecomment-840509576",target:"_blank",rel:"noopener noreferrer"}},[e._v("solution"),s("OutboundLink")],1),e._v("):")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"pip==22"')]),e._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# starting with pip 23.1, gym 0.21.0 is not intallable anymore")]),e._v("\npoetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"setuptools<67"')]),e._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# starting with setuptools 67, gym 0.21.0 is not intallable anymore")]),e._v("\npoetry run python -m pip uninstall -y wheel "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# wheel must not be here to fall back directly to python setup.py")]),e._v("\npoetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("gym")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("==")]),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("0.21")]),e._v(".0 --no-use-pep517\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Install all dependencies as defined in "),s("code",[e._v("poetry.lock")]),e._v(", build and install the c++ library.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -rf build "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# removing previous build")]),e._v("\npoetry "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --extras all\n")])])])])]),e._v(" "),s("h4",{attrs:{id:"use-of-developer-mode-installation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#use-of-developer-mode-installation"}},[e._v("#")]),e._v(" Use of developer mode installation")]),e._v(" "),s("p",[e._v("Now you are able to use the library in developer mode (i.e. with code modifications directly taken into account)\nby prefixing all commands with "),s("code",[e._v("poetry run")]),e._v(".\nFor instance:")]),e._v(" "),s("ul",[s("li",[e._v("to see the list of installed packages: "),s("code",[e._v("poetry run pip list")]),e._v(" (NB: you can also use "),s("code",[e._v("poetry show")]),e._v(")")]),e._v(" "),s("li",[e._v("to run the tutorial script from examples: "),s("code",[e._v("poetry run python examples/tutorial.py")])])]),e._v(" "),s("h3",{attrs:{id:"building-the-docs-locally"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#building-the-docs-locally"}},[e._v("#")]),e._v(" Building the docs locally")]),e._v(" "),s("p",[e._v("The documentation is using "),s("a",{attrs:{href:"https://v1.vuepress.vuejs.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("VuePress"),s("OutboundLink")],1),e._v(" to generate an interactive static website.\nSome pages are generated from code thanks to the Python script "),s("code",[e._v("docs/autodoc.py")]),e._v(".")]),e._v(" "),s("h4",{attrs:{id:"install-the-library-in-developer-mode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install-the-library-in-developer-mode"}},[e._v("#")]),e._v(" Install the library in developer mode.")]),e._v(" "),s("p",[e._v("See "),s("a",{attrs:{href:"#installing-from-source-in-developer-mode"}},[e._v("above")]),e._v(" to install scikit-decide with poetry.")]),e._v(" "),s("h4",{attrs:{id:"install-the-documentation-dependencies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install-the-documentation-dependencies"}},[e._v("#")]),e._v(" Install the documentation dependencies")]),e._v(" "),s("p",[e._v("The Python dependencies should have been installed in previous step,\nbut you still need to install the JavaScript ones (including VuePress).")]),e._v(" "),s("p",[e._v("First, get Yarn (package manager) by following "),s("a",{attrs:{href:"https://yarnpkg.com/en/docs/install",target:"_blank",rel:"noopener noreferrer"}},[e._v("these installation steps"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("p",[e._v('Make sure you are in the "scikit-decide" root directory and install documentation dependencies:')]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v("\n")])])]),s("h4",{attrs:{id:"define-environment-variables-for-binder-links"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#define-environment-variables-for-binder-links"}},[e._v("#")]),e._v(" Define environment variables for binder links")]),e._v(" "),s("p",[e._v("In order to define appropriate links for notebooks (github source + launching on binder), we need several environment variables:")]),e._v(" "),s("ul",[s("li",[e._v("AUTODOC_BINDER_ENV_GH_REPO_NAME: name of the github repository hosting the binder environment")]),e._v(" "),s("li",[e._v("AUTODOC_BINDER_ENV_GH_BRANCH: branch hosting the binder environment")]),e._v(" "),s("li",[e._v("AUTODOC_NOTEBOOKS_REPO_URL: url of the content repository for the notebooks")]),e._v(" "),s("li",[e._v("AUTODOC_NOTEBOOKS_BRANCH: branch containing the notebooks")])]),e._v(" "),s("p",[e._v("For instance:")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AUTODOC_BINDER_ENV_GH_REPO_NAME")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"airbus/scikit-decide"')]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AUTODOC_BINDER_ENV_GH_BRANCH")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"binder"')]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("current_repo_url_withdotgit")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token variable"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" remote get-url origin"),s("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AUTODOC_NOTEBOOKS_REPO_URL")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token variable"}},[e._v("${current_repo_url_withdotgit"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("/")]),e._v(".git"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("/")]),e._v("}")]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AUTODOC_NOTEBOOKS_BRANCH")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token variable"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" branch --show-current"),s("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v("\n")])])]),s("h4",{attrs:{id:"build-the-docs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-the-docs"}},[e._v("#")]),e._v(" Build the docs")]),e._v(" "),s("p",[e._v('Make sure you are in the "scikit-decide" root directory and using the virtual environment where you installed scikit-decide.\nIf you used poetry, that means prepending python commands with '),s("code",[e._v("poetry run")]),e._v(".\nThen generate and serve locally the documentation with:")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry run "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" docs:dev\n")])])]),s("p",[e._v("NB: The above command will call "),s("code",[e._v("python docs/autodoc.py")]),e._v(" hence the use of "),s("code",[e._v("poetry run")]),e._v(".")]),e._v(" "),s("p",[e._v("Open your web browser to access the documentation (by default on http://localhost:8080/scikit-decide/).")]),e._v(" "),s("h3",{attrs:{id:"running-unit-tests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#running-unit-tests"}},[e._v("#")]),e._v(" Running unit tests")]),e._v(" "),s("p",[e._v("The unit tests are gathered in "),s("code",[e._v("tests/")]),e._v(" folder and run with "),s("a",{attrs:{href:"https://docs.pytest.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("pytest"),s("OutboundLink")],1),e._v(".\nProviding you installed the library in developer mode as described "),s("a",{attrs:{href:"#installing-from-source-in-developer-mode"}},[e._v("above")]),e._v(",\npytest should have been already installed by poetry.")]),e._v(" "),s("p",[e._v('From the "scikit-decide" root directory, run unit tests with:')]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry run pytest tests\n")])])]),s("h3",{attrs:{id:"running-notebooks-as-tests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#running-notebooks-as-tests"}},[e._v("#")]),e._v(" Running notebooks as tests")]),e._v(" "),s("p",[e._v("One can test programmatically that notebooks are not broken thanks to "),s("a",{attrs:{href:"https://github.com/treebeardtech/nbmake",target:"_blank",rel:"noopener noreferrer"}},[e._v("nbmake"),s("OutboundLink")],1),e._v(" extension for pytest.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry run pytest --nbmake notebooks -v\n")])])]),s("h2",{attrs:{id:"guidelines-to-follow-when-preparing-a-contribution"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#guidelines-to-follow-when-preparing-a-contribution"}},[e._v("#")]),e._v(" Guidelines to follow when preparing a contribution")]),e._v(" "),s("h3",{attrs:{id:"coding-style-and-code-linting"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coding-style-and-code-linting"}},[e._v("#")]),e._v(" Coding style and code linting")]),e._v(" "),s("p",[e._v("To help maintaining the same coding style across the project, some code linters are used via "),s("a",{attrs:{href:"https://pre-commit.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("pre-commit"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("p",[e._v("It is used by CI to run checks at each push, but can also be used locally.")]),e._v(" "),s("p",[e._v("Once installed, you can run it on all files with")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("pre-commit run --all-files\n")])])]),s("p",[e._v("Beware that doing so, you are actually modifying the files.")]),e._v(" "),s("p",[e._v("You can also use it when committing:")]),e._v(" "),s("ul",[s("li",[e._v("stage your changes: "),s("code",[e._v("git add your_files")]),e._v(",")]),e._v(" "),s("li",[e._v("run pre-commit on the staged files: "),s("code",[e._v("pre-commit run")]),e._v(",")]),e._v(" "),s("li",[e._v("check the changes made,")]),e._v(" "),s("li",[e._v("accept them by adding modified files: "),s("code",[e._v("git add -u")]),e._v(",")]),e._v(" "),s("li",[e._v("commit: "),s("code",[e._v("git commit")]),e._v(".")])]),e._v(" "),s("p",[e._v("This can also be done automatically at each commit if you add pre-commit to git hooks with "),s("code",[e._v("pre-commit install")]),e._v(".\nBeware that when doing so,")]),e._v(" "),s("ul",[s("li",[e._v("the changes will be refused if pre-commit actually modifies the files,")]),e._v(" "),s("li",[e._v("you can then accept the modifications with "),s("code",[e._v("git add -u")]),e._v(",")]),e._v(" "),s("li",[e._v("you can still force a commit that violates pre-commit checks with "),s("code",[e._v("git commit -n")]),e._v(" or "),s("code",[e._v("git commit --no-verify")]),e._v(".")])]),e._v(" "),s("p",[e._v("If you prefer run pre-commit manually, you can remove the hooks with "),s("code",[e._v("pre-commit uninstall")]),e._v(".")]),e._v(" "),s("h3",{attrs:{id:"notebooks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#notebooks"}},[e._v("#")]),e._v(" Notebooks")]),e._v(" "),s("p",[e._v("We try to give some introductory examples via notebooks available in the corresponding "),s("code",[e._v("notebooks/")]),e._v(" directory.")]),e._v(" "),s("p",[e._v("The list of these notebooks is automatically inserted in the documentation with a title and a description.\nThese are actually extracted from the first cell. To enable that, each notebook should")]),e._v(" "),s("ul",[s("li",[e._v("start with a markdown cell,")]),e._v(" "),s("li",[e._v('its first line being the title starting with one number sign ("# "),')]),e._v(" "),s("li",[e._v("the remaining lines being used as the description.")])]),e._v(" "),s("p",[e._v("For instance:")]),e._v(" "),s("div",{staticClass:"language-markdown extra-class"},[s("pre",{pre:!0,attrs:{class:"language-markdown"}},[s("code",[s("span",{pre:!0,attrs:{class:"token title important"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("#")]),e._v(" Great notebook title")]),e._v("\n\nA quick description of the main features of the notebook.\nCan be on several lines.\n\nCan include a nice thumbnail.\n"),s("span",{pre:!0,attrs:{class:"token url"}},[s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("!")]),e._v("["),s("span",{pre:!0,attrs:{class:"token content"}},[e._v("Notebook_thumbnail")]),e._v("]("),s("span",{pre:!0,attrs:{class:"token url"}},[e._v("https://airbus.github.io/scikit-decide/maze.png")]),e._v(")")]),e._v("\n")])])]),s("h3",{attrs:{id:"adding-unit-tests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adding-unit-tests"}},[e._v("#")]),e._v(" Adding unit tests")]),e._v(" "),s("ul",[s("li",[e._v("Whenever adding some code, think to add some tests to the "),s("code",[e._v("tests/")]),e._v(" folder.")]),e._v(" "),s("li",[e._v("Whenever fixing a bug, think to add a test that crashes before fixing the bug and does not afterwards.")])]),e._v(" "),s("p",[e._v("Follow "),s("a",{attrs:{href:"#running-unit-tests"}},[e._v("above instructions")]),e._v(" to run them with pytest.")]),e._v(" "),s("h2",{attrs:{id:"submitting-pull-requests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#submitting-pull-requests"}},[e._v("#")]),e._v(" Submitting pull requests")]),e._v(" "),s("p",[e._v("When you think you are ready to merge your modifications into the main repository, you will have to open a pull request (PR).\nWe can summarize the process as follows:")]),e._v(" "),s("ul",[s("li",[e._v("Fork the repository on github.")]),e._v(" "),s("li",[e._v("Clone your fork on your computer.")]),e._v(" "),s("li",[e._v("Make your changes and push them to your fork.")]),e._v(" "),s("li",[e._v("Do the necessary checks (see "),s("a",{attrs:{href:"#prior-checks"}},[e._v("below")]),e._v(").")]),e._v(" "),s("li",[e._v("Reorganize your commits (see "),s("a",{attrs:{href:"#reorganizing-commits"}},[e._v("below")]),e._v(").")]),e._v(" "),s("li",[e._v("Submit your pull request (see "),s("a",{attrs:{href:"https://help.github.com/articles/creating-a-pull-request-from-a-fork/",target:"_blank",rel:"noopener noreferrer"}},[e._v("github documentation"),s("OutboundLink")],1),e._v(").")]),e._v(" "),s("li",[e._v("See if all CI checks passed on your PR.")]),e._v(" "),s("li",[e._v("Wait for a review.")]),e._v(" "),s("li",[e._v("Take the comments and required changes into account.")])]),e._v(" "),s("p",[e._v("Note that a PR needs at least one review by a core developer to be merged.")]),e._v(" "),s("p",[e._v("You may want to add a reference to the main repository to fetch from it and (re)base your changes on it:")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" remote "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("add")]),e._v(" upstream https://github.com/airbus/scikit-decide\n")])])]),s("p",[e._v("This "),s("a",{attrs:{href:"https://medium.com/google-developer-experts/how-to-pull-request-d75ac81449a5",target:"_blank",rel:"noopener noreferrer"}},[e._v("post"),s("OutboundLink")],1),e._v(" points out good practices to follow to submit great pull requests and review them efficiently.")]),e._v(" "),s("h3",{attrs:{id:"prior-checks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#prior-checks"}},[e._v("#")]),e._v(" Prior checks")]),e._v(" "),s("p",[e._v("Before submitting your pull request, think to")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#running-unit-tests"}},[e._v("run the unit tests")]),e._v(",")]),e._v(" "),s("li",[s("a",{attrs:{href:"#building-the-docs-locally"}},[e._v("check the documentation locally")]),e._v(" if you modified it,")]),e._v(" "),s("li",[e._v("check you respect the coding styles by "),s("a",{attrs:{href:"#coding-style-and-code-linting"}},[e._v("running linters")]),e._v(".")])]),e._v(" "),s("p",[e._v("If you do not, you will still be able to see the status of your PR as CI will do these checks for you.")]),e._v(" "),s("h3",{attrs:{id:"reorganizing-commits"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reorganizing-commits"}},[e._v("#")]),e._v(" Reorganizing commits")]),e._v(" "),s("p",[e._v("On your way to implement your contribution, you will probably have lots of commits,\nsome modifying other ones from the same PR, or only modifying the code style.")]),e._v(" "),s("p",[e._v("At the end of your work, consider reorganizing them by")]),e._v(" "),s("ul",[s("li",[e._v("squashing them into one or only a few logical commits,")]),e._v(" "),s("li",[e._v("having a separate commit to reformat previous existing code if necessary,")]),e._v(" "),s("li",[e._v('rewritting commit messages so that it explains the changes made and why, the "how" part being explained by the code itself\n(see this '),s("a",{attrs:{href:"https://chris.beams.io/posts/git-commit/",target:"_blank",rel:"noopener noreferrer"}},[e._v("post"),s("OutboundLink")],1),e._v(" about what a commit message should and should not contain),")]),e._v(" "),s("li",[e._v("rebasing on upstream repository master branch if it diverged too much by the time you finished.")])]),e._v(" "),s("p",[e._v("You can use "),s("code",[e._v("git rebase -i")]),e._v(" to do that, as explained in "),s("a",{attrs:{href:"https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History",target:"_blank",rel:"noopener noreferrer"}},[e._v("git documentation"),s("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{621:function(e,t,s){"use strict";s.r(t);var a=s(38),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"contributing-to-scikit-decide"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#contributing-to-scikit-decide"}},[e._v("#")]),e._v(" Contributing to scikit-decide")]),e._v(" "),s("p",[e._v("We welcome all contributions to scikit-decide.")]),e._v(" "),s("p",[e._v("You can help by:")]),e._v(" "),s("ul",[s("li",[e._v("fixing bugs (see "),s("a",{attrs:{href:"https://github.com/airbus/scikit-decide/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("issues"),s("OutboundLink")],1),e._v(' with label "bug"),')]),e._v(" "),s("li",[e._v("adding new domains or solvers to the hub in "),s("code",[e._v("skdecide/hub/")]),e._v(",")]),e._v(" "),s("li",[e._v("improving the documentation,")]),e._v(" "),s("li",[e._v("adding and improving educational notebooks in "),s("code",[e._v("notebooks/")]),e._v(".")])]),e._v(" "),s("p",[e._v("This is not exhaustive.")]),e._v(" "),s("p",[e._v("The project is hosted on "),s("a",{attrs:{href:"https://github.com/airbus/scikit-decide",target:"_blank",rel:"noopener noreferrer"}},[e._v("https://github.com/airbus/scikit-decide"),s("OutboundLink")],1),e._v(".\nContributions to the repository are made by submitting pull requests.")]),e._v(" "),s("p",[e._v("This guide is organized as follows:")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#setting-up-your-development-environment"}},[e._v("Setting up your development environment")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#guidelines-to-follow-when-preparing-a-contribution"}},[e._v("Guidelines to follow when preparing a contribution")])]),e._v(" "),s("li",[s("a",{attrs:{href:"#submitting-pull-requests"}},[e._v("Submitting pull requests")]),e._v(" to put your contribution in the main repository")])]),e._v(" "),s("h2",{attrs:{id:"setting-up-your-development-environment"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-your-development-environment"}},[e._v("#")]),e._v(" Setting up your development environment")]),e._v(" "),s("h3",{attrs:{id:"prerequisite-minizinc"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#prerequisite-minizinc"}},[e._v("#")]),e._v(" Prerequisite: minizinc")]),e._v(" "),s("p",[e._v("You need first to install "),s("a",{attrs:{href:"https://www.minizinc.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("minizinc"),s("OutboundLink")],1),e._v(" (version greater than 2.6) and update the "),s("code",[e._v("PATH")]),e._v(" environment variable\nso that it can be found by Python. See "),s("a",{attrs:{href:"https://www.minizinc.org/doc-latest/en/installation.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("minizinc documentation"),s("OutboundLink")],1),e._v(" for more details.")]),e._v(" "),s("h3",{attrs:{id:"installing-from-source-in-developer-mode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#installing-from-source-in-developer-mode"}},[e._v("#")]),e._v(" Installing from source in developer mode")]),e._v(" "),s("blockquote",[s("p",[s("strong",[e._v("Disclaimer")]),e._v(": The following process has only been tested on Linux/MacOS platforms.")])]),e._v(" "),s("p",[e._v("In order to install scikit-decide from the source so that your modification to the library are taken into account, we recommmend using poetry.")]),e._v(" "),s("h4",{attrs:{id:"prerequisites-for-c"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites-for-c"}},[e._v("#")]),e._v(" Prerequisites for C++")]),e._v(" "),s("p",[e._v("To build the c++ part of the library,\nyou need a minimal environment with c++ compiler, cmake, and boost.\nTo be able to use parallelism based on openMP, you should also install libomp.\nFor instance, on macOS it is done via:")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("xcode-select --install\nbrew "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" cmake\nbrew "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" boost\nbrew "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" libomp\n")])])]),s("h4",{attrs:{id:"installation-with-pyenv-poetry"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#installation-with-pyenv-poetry"}},[e._v("#")]),e._v(" Installation with pyenv + poetry")]),e._v(" "),s("p",[e._v("Here are the steps to follow:")]),e._v(" "),s("ul",[s("li",[s("p",[e._v('Clone the source and got to the "scikit-decide" root directory.')]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone --recurse-submodules -j8 https://github.com/airbus/scikit-decide.git\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" scikit-decide\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Set proper python version (e.g. 3.8.11) for the scikit-decide project.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("pyenv "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("local")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("3.8")]),e._v(".11\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Update pip installer (the one that "),s("code",[e._v("pyenv")]),e._v(" makes you use).")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -U pip\n")])])]),s("ul",[s("li",[s("p",[e._v("Use poetry to install the project:")]),e._v(" "),s("ul",[s("li",[s("p",[e._v("Install "),s("a",{attrs:{href:"https://python-poetry.org/docs/master/#installation",target:"_blank",rel:"noopener noreferrer"}},[e._v("poetry"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py "),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" python -\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("PATH")])]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),s("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("$HOME")]),e._v("/.local/bin:"),s("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("$PATH")]),e._v('"')]),e._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# add path to poetry")]),e._v("\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Install poetry-dynamic-versioning in poetry root env")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry self "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("add")]),e._v(" poetry-dynamic-versioning\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Specify to poetry the python version to use so that it creates the appropriate virtual environment.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("env")]),e._v(" use "),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("3.8")]),e._v(".11\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Preinstall gym 0.21.0 with appropriate option to avoid an error during installation\n(see this "),s("a",{attrs:{href:"https://github.com/openai/gym/issues/3176",target:"_blank",rel:"noopener noreferrer"}},[e._v("issue"),s("OutboundLink")],1),e._v("\nand this "),s("a",{attrs:{href:"https://github.com/python-poetry/poetry/issues/3433#issuecomment-840509576",target:"_blank",rel:"noopener noreferrer"}},[e._v("solution"),s("OutboundLink")],1),e._v("):")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"pip==22"')]),e._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# starting with pip 23.1, gym 0.21.0 is not intallable anymore")]),e._v("\npoetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"setuptools<67"')]),e._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# starting with setuptools 67, gym 0.21.0 is not intallable anymore")]),e._v("\npoetry run python -m pip uninstall -y wheel "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# wheel must not be here to fall back directly to python setup.py")]),e._v("\npoetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("gym")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("==")]),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("0.21")]),e._v(".0 --no-use-pep517\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Install all dependencies as defined in "),s("code",[e._v("poetry.lock")]),e._v(", build and install the c++ library.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -rf build "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# removing previous build")]),e._v("\npoetry "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --extras all\n")])])])])])])])])]),e._v(" "),s("h4",{attrs:{id:"alternate-installation-with-conda-poetry"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#alternate-installation-with-conda-poetry"}},[e._v("#")]),e._v(" Alternate installation with conda + poetry")]),e._v(" "),s("p",[e._v("You can also use conda rather than pyenv. It can be useful when you cannot install poetry via the above method,\nas it can also be installed by conda via the conda-forge channel.")]),e._v(" "),s("ul",[s("li",[s("p",[e._v('Clone the source and got to the "scikit-decide" root directory.')]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone --recurse-submodules -j8 https://github.com/airbus/scikit-decide.git\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" scikit-decide\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Create and activate a conda environment with the proper python version for the scikit-decide project.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("conda create -n test_dev_skdecide "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("python")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("3.8")]),e._v(".11\nconda activate test_dev_skdecide\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Update pip installer")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -U pip\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Install poetry in the environment")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("conda "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -c conda-forge poetry\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Install poetry-dynamic-versioning in poetry root env")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry self "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("add")]),e._v(" poetry-dynamic-versioning\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Preinstall gym 0.21.0 with appropriate option to avoid an error during installation\n(see this "),s("a",{attrs:{href:"https://github.com/openai/gym/issues/3176",target:"_blank",rel:"noopener noreferrer"}},[e._v("issue"),s("OutboundLink")],1),e._v("\nand this "),s("a",{attrs:{href:"https://github.com/python-poetry/poetry/issues/3433#issuecomment-840509576",target:"_blank",rel:"noopener noreferrer"}},[e._v("solution"),s("OutboundLink")],1),e._v("):")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"pip==22"')]),e._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# starting with pip 23.1, gym 0.21.0 is not intallable anymore")]),e._v("\npoetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"setuptools<67"')]),e._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# starting with setuptools 67, gym 0.21.0 is not intallable anymore")]),e._v("\npoetry run python -m pip uninstall -y wheel "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# wheel must not be here to fall back directly to python setup.py")]),e._v("\npoetry run python -m pip "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("gym")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("==")]),s("span",{pre:!0,attrs:{class:"token number"}},[e._v("0.21")]),e._v(".0 --no-use-pep517\n")])])])]),e._v(" "),s("li",[s("p",[e._v("Install all dependencies as defined in "),s("code",[e._v("poetry.lock")]),e._v(", build and install the c++ library.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -rf build "),s("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# removing previous build")]),e._v("\npoetry "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --extras all\n")])])])])]),e._v(" "),s("h4",{attrs:{id:"use-of-developer-mode-installation"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#use-of-developer-mode-installation"}},[e._v("#")]),e._v(" Use of developer mode installation")]),e._v(" "),s("p",[e._v("Now you are able to use the library in developer mode (i.e. with code modifications directly taken into account)\nby prefixing all commands with "),s("code",[e._v("poetry run")]),e._v(".\nFor instance:")]),e._v(" "),s("ul",[s("li",[e._v("to see the list of installed packages: "),s("code",[e._v("poetry run pip list")]),e._v(" (NB: you can also use "),s("code",[e._v("poetry show")]),e._v(")")]),e._v(" "),s("li",[e._v("to run the tutorial script from examples: "),s("code",[e._v("poetry run python examples/tutorial.py")])])]),e._v(" "),s("h3",{attrs:{id:"building-the-docs-locally"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#building-the-docs-locally"}},[e._v("#")]),e._v(" Building the docs locally")]),e._v(" "),s("p",[e._v("The documentation is using "),s("a",{attrs:{href:"https://v1.vuepress.vuejs.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("VuePress"),s("OutboundLink")],1),e._v(" to generate an interactive static website.\nSome pages are generated from code thanks to the Python script "),s("code",[e._v("docs/autodoc.py")]),e._v(".")]),e._v(" "),s("h4",{attrs:{id:"install-the-library-in-developer-mode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install-the-library-in-developer-mode"}},[e._v("#")]),e._v(" Install the library in developer mode.")]),e._v(" "),s("p",[e._v("See "),s("a",{attrs:{href:"#installing-from-source-in-developer-mode"}},[e._v("above")]),e._v(" to install scikit-decide with poetry.")]),e._v(" "),s("h4",{attrs:{id:"install-the-documentation-dependencies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install-the-documentation-dependencies"}},[e._v("#")]),e._v(" Install the documentation dependencies")]),e._v(" "),s("p",[e._v("The Python dependencies should have been installed in previous step,\nbut you still need to install the JavaScript ones (including VuePress).")]),e._v(" "),s("p",[e._v("First, get Yarn (package manager) by following "),s("a",{attrs:{href:"https://yarnpkg.com/en/docs/install",target:"_blank",rel:"noopener noreferrer"}},[e._v("these installation steps"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("p",[e._v('Make sure you are in the "scikit-decide" root directory and install documentation dependencies:')]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v("\n")])])]),s("h4",{attrs:{id:"define-environment-variables-for-binder-links"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#define-environment-variables-for-binder-links"}},[e._v("#")]),e._v(" Define environment variables for binder links")]),e._v(" "),s("p",[e._v("In order to define appropriate links for notebooks (github source + launching on binder), we need several environment variables:")]),e._v(" "),s("ul",[s("li",[e._v("AUTODOC_BINDER_ENV_GH_REPO_NAME: name of the github repository hosting the binder environment")]),e._v(" "),s("li",[e._v("AUTODOC_BINDER_ENV_GH_BRANCH: branch hosting the binder environment")]),e._v(" "),s("li",[e._v("AUTODOC_NOTEBOOKS_REPO_URL: url of the content repository for the notebooks")]),e._v(" "),s("li",[e._v("AUTODOC_NOTEBOOKS_BRANCH: branch containing the notebooks")])]),e._v(" "),s("p",[e._v("For instance:")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AUTODOC_BINDER_ENV_GH_REPO_NAME")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"airbus/scikit-decide"')]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AUTODOC_BINDER_ENV_GH_BRANCH")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token string"}},[e._v('"binder"')]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("current_repo_url_withdotgit")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token variable"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" remote get-url origin"),s("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AUTODOC_NOTEBOOKS_REPO_URL")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token variable"}},[e._v("${current_repo_url_withdotgit"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("/")]),e._v(".git"),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("/")]),e._v("}")]),e._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),s("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AUTODOC_NOTEBOOKS_BRANCH")]),s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),s("span",{pre:!0,attrs:{class:"token variable"}},[s("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" branch --show-current"),s("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v("\n")])])]),s("h4",{attrs:{id:"build-the-docs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-the-docs"}},[e._v("#")]),e._v(" Build the docs")]),e._v(" "),s("p",[e._v('Make sure you are in the "scikit-decide" root directory and using the virtual environment where you installed scikit-decide.\nIf you used poetry, that means prepending python commands with '),s("code",[e._v("poetry run")]),e._v(".\nThen generate and serve locally the documentation with:")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry run "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("yarn")]),e._v(" docs:dev\n")])])]),s("p",[e._v("NB: The above command will call "),s("code",[e._v("python docs/autodoc.py")]),e._v(" hence the use of "),s("code",[e._v("poetry run")]),e._v(".")]),e._v(" "),s("p",[e._v("Open your web browser to access the documentation (by default on http://localhost:8080/scikit-decide/).")]),e._v(" "),s("h3",{attrs:{id:"running-unit-tests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#running-unit-tests"}},[e._v("#")]),e._v(" Running unit tests")]),e._v(" "),s("p",[e._v("The unit tests are gathered in "),s("code",[e._v("tests/")]),e._v(" folder and run with "),s("a",{attrs:{href:"https://docs.pytest.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("pytest"),s("OutboundLink")],1),e._v(".\nProviding you installed the library in developer mode as described "),s("a",{attrs:{href:"#installing-from-source-in-developer-mode"}},[e._v("above")]),e._v(",\npytest should have been already installed by poetry.")]),e._v(" "),s("p",[e._v('From the "scikit-decide" root directory, run unit tests with:')]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry run pytest tests\n")])])]),s("h3",{attrs:{id:"running-notebooks-as-tests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#running-notebooks-as-tests"}},[e._v("#")]),e._v(" Running notebooks as tests")]),e._v(" "),s("p",[e._v("One can test programmatically that notebooks are not broken thanks to "),s("a",{attrs:{href:"https://github.com/treebeardtech/nbmake",target:"_blank",rel:"noopener noreferrer"}},[e._v("nbmake"),s("OutboundLink")],1),e._v(" extension for pytest.")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("poetry run pytest --nbmake notebooks -v\n")])])]),s("h2",{attrs:{id:"guidelines-to-follow-when-preparing-a-contribution"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#guidelines-to-follow-when-preparing-a-contribution"}},[e._v("#")]),e._v(" Guidelines to follow when preparing a contribution")]),e._v(" "),s("h3",{attrs:{id:"coding-style-and-code-linting"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#coding-style-and-code-linting"}},[e._v("#")]),e._v(" Coding style and code linting")]),e._v(" "),s("p",[e._v("To help maintaining the same coding style across the project, some code linters are used via "),s("a",{attrs:{href:"https://pre-commit.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("pre-commit"),s("OutboundLink")],1),e._v(".")]),e._v(" "),s("p",[e._v("It is used by CI to run checks at each push, but can also be used locally.")]),e._v(" "),s("p",[e._v("Once installed, you can run it on all files with")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[e._v("pre-commit run --all-files\n")])])]),s("p",[e._v("Beware that doing so, you are actually modifying the files.")]),e._v(" "),s("p",[e._v("You can also use it when committing:")]),e._v(" "),s("ul",[s("li",[e._v("stage your changes: "),s("code",[e._v("git add your_files")]),e._v(",")]),e._v(" "),s("li",[e._v("run pre-commit on the staged files: "),s("code",[e._v("pre-commit run")]),e._v(",")]),e._v(" "),s("li",[e._v("check the changes made,")]),e._v(" "),s("li",[e._v("accept them by adding modified files: "),s("code",[e._v("git add -u")]),e._v(",")]),e._v(" "),s("li",[e._v("commit: "),s("code",[e._v("git commit")]),e._v(".")])]),e._v(" "),s("p",[e._v("This can also be done automatically at each commit if you add pre-commit to git hooks with "),s("code",[e._v("pre-commit install")]),e._v(".\nBeware that when doing so,")]),e._v(" "),s("ul",[s("li",[e._v("the changes will be refused if pre-commit actually modifies the files,")]),e._v(" "),s("li",[e._v("you can then accept the modifications with "),s("code",[e._v("git add -u")]),e._v(",")]),e._v(" "),s("li",[e._v("you can still force a commit that violates pre-commit checks with "),s("code",[e._v("git commit -n")]),e._v(" or "),s("code",[e._v("git commit --no-verify")]),e._v(".")])]),e._v(" "),s("p",[e._v("If you prefer run pre-commit manually, you can remove the hooks with "),s("code",[e._v("pre-commit uninstall")]),e._v(".")]),e._v(" "),s("h3",{attrs:{id:"notebooks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#notebooks"}},[e._v("#")]),e._v(" Notebooks")]),e._v(" "),s("p",[e._v("We try to give some introductory examples via notebooks available in the corresponding "),s("code",[e._v("notebooks/")]),e._v(" directory.")]),e._v(" "),s("p",[e._v("The list of these notebooks is automatically inserted in the documentation with a title and a description.\nThese are actually extracted from the first cell. To enable that, each notebook should")]),e._v(" "),s("ul",[s("li",[e._v("start with a markdown cell,")]),e._v(" "),s("li",[e._v('its first line being the title starting with one number sign ("# "),')]),e._v(" "),s("li",[e._v("the remaining lines being used as the description.")])]),e._v(" "),s("p",[e._v("For instance:")]),e._v(" "),s("div",{staticClass:"language-markdown extra-class"},[s("pre",{pre:!0,attrs:{class:"language-markdown"}},[s("code",[s("span",{pre:!0,attrs:{class:"token title important"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("#")]),e._v(" Great notebook title")]),e._v("\n\nA quick description of the main features of the notebook.\nCan be on several lines.\n\nCan include a nice thumbnail.\n"),s("span",{pre:!0,attrs:{class:"token url"}},[s("span",{pre:!0,attrs:{class:"token operator"}},[e._v("!")]),e._v("["),s("span",{pre:!0,attrs:{class:"token content"}},[e._v("Notebook_thumbnail")]),e._v("]("),s("span",{pre:!0,attrs:{class:"token url"}},[e._v("https://airbus.github.io/scikit-decide/maze.png")]),e._v(")")]),e._v("\n")])])]),s("h3",{attrs:{id:"adding-unit-tests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adding-unit-tests"}},[e._v("#")]),e._v(" Adding unit tests")]),e._v(" "),s("ul",[s("li",[e._v("Whenever adding some code, think to add some tests to the "),s("code",[e._v("tests/")]),e._v(" folder.")]),e._v(" "),s("li",[e._v("Whenever fixing a bug, think to add a test that crashes before fixing the bug and does not afterwards.")])]),e._v(" "),s("p",[e._v("Follow "),s("a",{attrs:{href:"#running-unit-tests"}},[e._v("above instructions")]),e._v(" to run them with pytest.")]),e._v(" "),s("h2",{attrs:{id:"submitting-pull-requests"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#submitting-pull-requests"}},[e._v("#")]),e._v(" Submitting pull requests")]),e._v(" "),s("p",[e._v("When you think you are ready to merge your modifications into the main repository, you will have to open a pull request (PR).\nWe can summarize the process as follows:")]),e._v(" "),s("ul",[s("li",[e._v("Fork the repository on github.")]),e._v(" "),s("li",[e._v("Clone your fork on your computer.")]),e._v(" "),s("li",[e._v("Make your changes and push them to your fork.")]),e._v(" "),s("li",[e._v("Do the necessary checks (see "),s("a",{attrs:{href:"#prior-checks"}},[e._v("below")]),e._v(").")]),e._v(" "),s("li",[e._v("Reorganize your commits (see "),s("a",{attrs:{href:"#reorganizing-commits"}},[e._v("below")]),e._v(").")]),e._v(" "),s("li",[e._v("Submit your pull request (see "),s("a",{attrs:{href:"https://help.github.com/articles/creating-a-pull-request-from-a-fork/",target:"_blank",rel:"noopener noreferrer"}},[e._v("github documentation"),s("OutboundLink")],1),e._v(").")]),e._v(" "),s("li",[e._v("See if all CI checks passed on your PR.")]),e._v(" "),s("li",[e._v("Wait for a review.")]),e._v(" "),s("li",[e._v("Take the comments and required changes into account.")])]),e._v(" "),s("p",[e._v("Note that a PR needs at least one review by a core developer to be merged.")]),e._v(" "),s("p",[e._v("You may want to add a reference to the main repository to fetch from it and (re)base your changes on it:")]),e._v(" "),s("div",{staticClass:"language-shell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-shell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" remote "),s("span",{pre:!0,attrs:{class:"token function"}},[e._v("add")]),e._v(" upstream https://github.com/airbus/scikit-decide\n")])])]),s("p",[e._v("This "),s("a",{attrs:{href:"https://medium.com/google-developer-experts/how-to-pull-request-d75ac81449a5",target:"_blank",rel:"noopener noreferrer"}},[e._v("post"),s("OutboundLink")],1),e._v(" points out good practices to follow to submit great pull requests and review them efficiently.")]),e._v(" "),s("h3",{attrs:{id:"prior-checks"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#prior-checks"}},[e._v("#")]),e._v(" Prior checks")]),e._v(" "),s("p",[e._v("Before submitting your pull request, think to")]),e._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"#running-unit-tests"}},[e._v("run the unit tests")]),e._v(",")]),e._v(" "),s("li",[s("a",{attrs:{href:"#building-the-docs-locally"}},[e._v("check the documentation locally")]),e._v(" if you modified it,")]),e._v(" "),s("li",[e._v("check you respect the coding styles by "),s("a",{attrs:{href:"#coding-style-and-code-linting"}},[e._v("running linters")]),e._v(".")])]),e._v(" "),s("p",[e._v("If you do not, you will still be able to see the status of your PR as CI will do these checks for you.")]),e._v(" "),s("h3",{attrs:{id:"reorganizing-commits"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reorganizing-commits"}},[e._v("#")]),e._v(" Reorganizing commits")]),e._v(" "),s("p",[e._v("On your way to implement your contribution, you will probably have lots of commits,\nsome modifying other ones from the same PR, or only modifying the code style.")]),e._v(" "),s("p",[e._v("At the end of your work, consider reorganizing them by")]),e._v(" "),s("ul",[s("li",[e._v("squashing them into one or only a few logical commits,")]),e._v(" "),s("li",[e._v("having a separate commit to reformat previous existing code if necessary,")]),e._v(" "),s("li",[e._v('rewritting commit messages so that it explains the changes made and why, the "how" part being explained by the code itself\n(see this '),s("a",{attrs:{href:"https://chris.beams.io/posts/git-commit/",target:"_blank",rel:"noopener noreferrer"}},[e._v("post"),s("OutboundLink")],1),e._v(" about what a commit message should and should not contain),")]),e._v(" "),s("li",[e._v("rebasing on upstream repository master branch if it diverged too much by the time you finished.")])]),e._v(" "),s("p",[e._v("You can use "),s("code",[e._v("git rebase -i")]),e._v(" to do that, as explained in "),s("a",{attrs:{href:"https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History",target:"_blank",rel:"noopener noreferrer"}},[e._v("git documentation"),s("OutboundLink")],1),e._v(".")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/19.042c7c8d.js b/assets/js/19.1e9a6f2b.js similarity index 99% rename from assets/js/19.042c7c8d.js rename to assets/js/19.1e9a6f2b.js index 273a4490c8..8654dac855 100644 --- a/assets/js/19.042c7c8d.js +++ b/assets/js/19.1e9a6f2b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{584:function(t,a,e){"use strict";e.r(a);var s=e(38),o=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#guide"}},[t._v("#")]),t._v(" Guide")]),t._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#introduction"}},[t._v("Introduction")]),e("ul",[e("li",[e("a",{attrs:{href:"#as-a-domain-developer"}},[t._v("As a domain developer")])]),e("li",[e("a",{attrs:{href:"#as-a-solver-developer"}},[t._v("As a solver developer")])])])]),e("li",[e("a",{attrs:{href:"#getting-started"}},[t._v("Getting started")])]),e("li",[e("a",{attrs:{href:"#how-to"}},[t._v("How to")]),e("ul",[e("li",[e("a",{attrs:{href:"#select-a-domain-to-solve"}},[t._v("Select a domain to solve")])]),e("li",[e("a",{attrs:{href:"#find-compatible-solvers"}},[t._v("Find compatible solvers")])]),e("li",[e("a",{attrs:{href:"#compute-a-solution"}},[t._v("Compute a solution")])]),e("li",[e("a",{attrs:{href:"#test-the-solution"}},[t._v("Test the solution")])]),e("li",[e("a",{attrs:{href:"#clean-up-the-solver"}},[t._v("Clean up the solver")])])])]),e("li",[e("a",{attrs:{href:"#examples"}},[t._v("Examples")]),e("ul",[e("li",[e("a",{attrs:{href:"#notebooks"}},[t._v("Notebooks")])]),e("li",[e("a",{attrs:{href:"#python-scripts"}},[t._v("Python scripts")])]),e("li",[e("a",{attrs:{href:"#playground"}},[t._v("Playground")])])])]),e("li",[e("a",{attrs:{href:"#code-generators"}},[t._v("Code generators")])]),e("li",[e("a",{attrs:{href:"#roadmap"}},[t._v("Roadmap")])])])]),e("p"),t._v(" "),e("h2",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("p",[t._v("Scikit-decide is an AI framework for Reinforcement Learning, Automated Planning and Scheduling.")]),t._v(" "),e("p",[t._v("It is meant for being a one-stop shop solution to formalize decision-making problems, finding compatible solvers among a growing catalog and get the best solution possible. The catalog is a combination of wrapped existing domains/solvers and newly contributed ones.")]),t._v(" "),e("img",{attrs:{src:t.$withBase("/architecture.png"),alt:"Architecture"}}),t._v(" "),e("p",[t._v("Please refer to our "),e("router-link",{attrs:{to:"/install"}},[t._v("installation instructions")]),t._v(" for installing scikit-decide.")],1),t._v(" "),e("h3",{attrs:{id:"as-a-domain-developer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#as-a-domain-developer"}},[t._v("#")]),t._v(" As a domain developer")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("Scikit-decide supports formalizing the problem one characteristic at a time without the need of being an algorithmic expert nor knowing in advance the best kind of solver for this task (RL, planning, scheduling or any hybrid type).")])]),t._v(" "),e("h3",{attrs:{id:"as-a-solver-developer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#as-a-solver-developer"}},[t._v("#")]),t._v(" As a solver developer")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("Scikit-decide provides a meaningful API to interact with domains at the expected level of information, as well as a catalog of domains/solvers to test/benchmark new algorithms.")])]),t._v(" "),e("h2",{attrs:{id:"getting-started"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[t._v("#")]),t._v(" Getting started")]),t._v(" "),e("p",[t._v("Domain characteristics are one of the key concepts in scikit-decide: they are combined on the one hand to define domains, on the other hand to specify the envelope of domains a solver can tackle.")]),t._v(" "),e("p",[t._v("Each characteristic has various levels, from general (high-level) to specialized (low-level) ones, each level inheriting higher-level functions. Any domain fully contained in a solver's envelope is compatible with this solver, unless it violates additional requirements (optional).")]),t._v(" "),e("img",{attrs:{src:t.$withBase("/characteristics.png"),alt:"Characteristics"}}),t._v(" "),e("p",[t._v("Defining a domain to solve is a matter of:")]),t._v(" "),e("ul",[e("li",[t._v("selecting a base domain class ("),e("code",[t._v("Domain")]),t._v(" by default or any pre-made template for typical combinations like "),e("code",[t._v("DeterministicPlanningDomain")]),t._v(")")]),t._v(" "),e("li",[t._v("fine-tuning any necessary characteristic level with something more specialized (lower-level)")]),t._v(" "),e("li",[t._v("auto-generating the code skeleton from the combination above (technically by implementing all abstract methods)")]),t._v(" "),e("li",[t._v("filling the code as needed based on domain expertise")])]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("When starting a new domain or solver, it is highly recommended to check the "),e("a",{attrs:{href:"#code-generators"}},[t._v("code generators")]),t._v(" for assistance and auto-generation of the skeleton to fill.")])]),t._v(" "),e("p",[t._v("Check "),e("a",{attrs:{href:"#how-to"}},[t._v("How to")]),t._v(" to see how to find compatible solvers and compute a solution, once a domain is defined.")]),t._v(" "),e("h2",{attrs:{id:"how-to"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#how-to"}},[t._v("#")]),t._v(" How to")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("Exact prints and outputs may vary depending on which domains/solvers are registered on your system.")])]),t._v(" "),e("h3",{attrs:{id:"select-a-domain-to-solve"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#select-a-domain-to-solve"}},[t._v("#")]),t._v(" Select a domain to solve")]),t._v(" "),e("p",[t._v("This step can be skipped if a domain has already been defined. Otherwise, here is how to load one from the catalog of registered domains:")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" skdecide "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" utils\n\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("print")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("utils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("get_registered_domains"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# prints: ['GymDomain', 'MasterMind', 'Maze', 'RockPaperScissors', ...]")]),t._v("\n\nMyDomain "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" utils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("load_registered_domain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'Maze'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"find-compatible-solvers"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#find-compatible-solvers"}},[t._v("#")]),t._v(" Find compatible solvers")]),t._v(" "),e("p",[t._v("This step can be skipped if a solver is already known to be compatible and selected as best candidate. Otherwise, here is how to find all compatible solvers:")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[t._v("compatible_solvers "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" utils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("match_solvers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("print")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("compatible_solvers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# prints: [, ...]")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# select Lazy A* solver and instanciate with default parameters")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" skdecide"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("hub"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("solver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("lazy_astar "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" LazyAstar\nmysolver "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" LazyAstar"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"compute-a-solution"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#compute-a-solution"}},[t._v("#")]),t._v(" Compute a solution")]),t._v(" "),e("p",[t._v("Here is how to solve "),e("code",[t._v("MyDomain")]),t._v(" with "),e("code",[t._v("mysolver")]),t._v(":")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[t._v("MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("solve_with"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"test-the-solution"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#test-the-solution"}},[t._v("#")]),t._v(" Test the solution")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Simple case (one basic rollout)")]),t._v("\nutils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("rollout"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Example of additional rollout parameters")]),t._v("\nutils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("rollout"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" num_episodes"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" max_steps"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" max_framerate"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("p",[t._v("In the example of the Maze solved with Lazy A*, the goal (in green) should be reached by the agent (in blue):")]),t._v(" "),e("img",{attrs:{src:t.$withBase("/maze.png"),alt:"Maze"}}),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("The rendering of the maze is done in a separate window when running in a local python script.\nTo get a similar result in a jupyter notebook, add a line")]),t._v(" "),e("div",{staticClass:"language-jupyter extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("%matplotlib qt\n")])])]),e("p",[t._v("before calling "),e("code",[t._v("rollout()")]),t._v(". See also the available "),e("router-link",{attrs:{to:"/notebooks"}},[t._v("tutorial notebooks")]),t._v("\nto know how to render the maze inline.")],1)]),t._v(" "),e("h3",{attrs:{id:"clean-up-the-solver"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#clean-up-the-solver"}},[t._v("#")]),t._v(" Clean up the solver")]),t._v(" "),e("p",[t._v("Some solvers (especially parallel C++ ones) need to be properly cleaned once used.")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[t._v("mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_cleanup"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("Note that this is automatically done if you use the solver within a "),e("code",[t._v("with")]),t._v(" statement:")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("with")]),t._v(" LazyAstar"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("as")]),t._v(" mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("solve_with"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n utils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("rollout"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("h2",{attrs:{id:"examples"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[t._v("#")]),t._v(" Examples")]),t._v(" "),e("h3",{attrs:{id:"notebooks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#notebooks"}},[t._v("#")]),t._v(" Notebooks")]),t._v(" "),e("p",[t._v("Go to the dedicated "),e("router-link",{attrs:{to:"/notebooks"}},[t._v("Notebooks")]),t._v(" page to see a curated list of notebooks recommended to start with scikit-decide.")],1),t._v(" "),e("h3",{attrs:{id:"python-scripts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#python-scripts"}},[t._v("#")]),t._v(" Python scripts")]),t._v(" "),e("p",[t._v("More examples can be found in the "),e("code",[t._v("examples/")]),t._v(" folder, showing how to import or define a domain, and how to run or solve it. Most of the examples rely on scikit-decide Hub, an extensible catalog of domains/solvers.")]),t._v(" "),e("h3",{attrs:{id:"playground"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#playground"}},[t._v("#")]),t._v(" Playground")]),t._v(" "),e("p",[t._v("The best example to try out scikit-decide capabilities might be "),e("code",[t._v("examples/full_multisolve.py")]),t._v(". This interactive console experience makes it easy to pick a domain among a pre-defined catalog selection:")]),t._v(" "),e("ul",[e("li",[t._v("Simple Grid World")]),t._v(" "),e("li",[t._v("Maze")]),t._v(" "),e("li",[t._v("Mastermind")]),t._v(" "),e("li",[t._v("Cart Pole (OpenAI Gym)")]),t._v(" "),e("li",[t._v("Mountain Car continuous (OpenAI Gym)")]),t._v(" "),e("li",[t._v("ATARI Pacman (OpenAI Gym)")])]),t._v(" "),e("p",[t._v("...and then solve it with any compatible solver (detected automatically) among following selection:")]),t._v(" "),e("ul",[e("li",[t._v("Random walk")]),t._v(" "),e("li",[t._v("Simple greedy")]),t._v(" "),e("li",[t._v("Lazy A* (classical planning)")]),t._v(" "),e("li",[t._v("PPO: Proximal Policy Optimization (deep reinforcement learning)")]),t._v(" "),e("li",[t._v("POMCP: Partially Observable Monte-Carlo Planning (online planning for POMDP)")]),t._v(" "),e("li",[t._v("CGP: Cartesian Genetic Programming (evolution strategy)")]),t._v(" "),e("li",[t._v("IW: Iterated Width search (width-based planning)")])]),t._v(" "),e("p",[e("strong",[t._v("Note")]),t._v(": some requirements declared in above solvers still need fine-tuning, so in some cases an auto-detected compatible solver may still be unable to solve a domain (for now).")]),t._v(" "),e("p",[t._v("These combinations are particularly efficient if you want to try them out:")]),t._v(" "),e("ul",[e("li",[t._v("Simple Grid World -> Lazy A*")]),t._v(" "),e("li",[t._v("Maze -> Lazy A*")]),t._v(" "),e("li",[t._v("Mastermind -> POMCP: Partially Observable Monte-Carlo Planning")]),t._v(" "),e("li",[t._v("Cart Pole -> PPO: Proximal Policy Optimization")]),t._v(" "),e("li",[t._v("Mountain Car continuous -> CGP: Cartesian Genetic Programming")]),t._v(" "),e("li",[t._v("ATARI Pacman -> Random walk")])]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("Some domains/solvers might require extra manual setup steps to work at 100%.\nIn the future, each scikit-decide hub entry might have a dedicated help page to list them, but in the meantime please refer to this:")]),t._v(" "),e("ul",[e("li",[t._v("OpenAI Gym domains: "),e("a",{attrs:{href:"http://gym.openai.com/docs/#installation",target:"_blank",rel:"noopener noreferrer"}},[t._v("OpenAI Gym"),e("OutboundLink")],1),t._v(" for loading Gym environments not included by default (e.g. atari games).")])])]),t._v(" "),e("h2",{attrs:{id:"code-generators"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#code-generators"}},[t._v("#")]),t._v(" Code generators")]),t._v(" "),e("p",[t._v("Go to "),e("router-link",{attrs:{to:"/codegen"}},[t._v("Code generators")]),t._v(" for assistance when creating a new domain or solver.")],1),t._v(" "),e("h2",{attrs:{id:"roadmap"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#roadmap"}},[t._v("#")]),t._v(" Roadmap")]),t._v(" "),e("p",[t._v("Following features will be added to scikit-decide soon:")]),t._v(" "),e("ul",[e("li",[t._v("Scheduling API")]),t._v(" "),e("li",[t._v("PDDL parser")])])])}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{623:function(t,a,e){"use strict";e.r(a);var s=e(38),o=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"guide"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#guide"}},[t._v("#")]),t._v(" Guide")]),t._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#introduction"}},[t._v("Introduction")]),e("ul",[e("li",[e("a",{attrs:{href:"#as-a-domain-developer"}},[t._v("As a domain developer")])]),e("li",[e("a",{attrs:{href:"#as-a-solver-developer"}},[t._v("As a solver developer")])])])]),e("li",[e("a",{attrs:{href:"#getting-started"}},[t._v("Getting started")])]),e("li",[e("a",{attrs:{href:"#how-to"}},[t._v("How to")]),e("ul",[e("li",[e("a",{attrs:{href:"#select-a-domain-to-solve"}},[t._v("Select a domain to solve")])]),e("li",[e("a",{attrs:{href:"#find-compatible-solvers"}},[t._v("Find compatible solvers")])]),e("li",[e("a",{attrs:{href:"#compute-a-solution"}},[t._v("Compute a solution")])]),e("li",[e("a",{attrs:{href:"#test-the-solution"}},[t._v("Test the solution")])]),e("li",[e("a",{attrs:{href:"#clean-up-the-solver"}},[t._v("Clean up the solver")])])])]),e("li",[e("a",{attrs:{href:"#examples"}},[t._v("Examples")]),e("ul",[e("li",[e("a",{attrs:{href:"#notebooks"}},[t._v("Notebooks")])]),e("li",[e("a",{attrs:{href:"#python-scripts"}},[t._v("Python scripts")])]),e("li",[e("a",{attrs:{href:"#playground"}},[t._v("Playground")])])])]),e("li",[e("a",{attrs:{href:"#code-generators"}},[t._v("Code generators")])]),e("li",[e("a",{attrs:{href:"#roadmap"}},[t._v("Roadmap")])])])]),e("p"),t._v(" "),e("h2",{attrs:{id:"introduction"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[t._v("#")]),t._v(" Introduction")]),t._v(" "),e("p",[t._v("Scikit-decide is an AI framework for Reinforcement Learning, Automated Planning and Scheduling.")]),t._v(" "),e("p",[t._v("It is meant for being a one-stop shop solution to formalize decision-making problems, finding compatible solvers among a growing catalog and get the best solution possible. The catalog is a combination of wrapped existing domains/solvers and newly contributed ones.")]),t._v(" "),e("img",{attrs:{src:t.$withBase("/architecture.png"),alt:"Architecture"}}),t._v(" "),e("p",[t._v("Please refer to our "),e("router-link",{attrs:{to:"/install"}},[t._v("installation instructions")]),t._v(" for installing scikit-decide.")],1),t._v(" "),e("h3",{attrs:{id:"as-a-domain-developer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#as-a-domain-developer"}},[t._v("#")]),t._v(" As a domain developer")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("Scikit-decide supports formalizing the problem one characteristic at a time without the need of being an algorithmic expert nor knowing in advance the best kind of solver for this task (RL, planning, scheduling or any hybrid type).")])]),t._v(" "),e("h3",{attrs:{id:"as-a-solver-developer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#as-a-solver-developer"}},[t._v("#")]),t._v(" As a solver developer")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("Scikit-decide provides a meaningful API to interact with domains at the expected level of information, as well as a catalog of domains/solvers to test/benchmark new algorithms.")])]),t._v(" "),e("h2",{attrs:{id:"getting-started"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[t._v("#")]),t._v(" Getting started")]),t._v(" "),e("p",[t._v("Domain characteristics are one of the key concepts in scikit-decide: they are combined on the one hand to define domains, on the other hand to specify the envelope of domains a solver can tackle.")]),t._v(" "),e("p",[t._v("Each characteristic has various levels, from general (high-level) to specialized (low-level) ones, each level inheriting higher-level functions. Any domain fully contained in a solver's envelope is compatible with this solver, unless it violates additional requirements (optional).")]),t._v(" "),e("img",{attrs:{src:t.$withBase("/characteristics.png"),alt:"Characteristics"}}),t._v(" "),e("p",[t._v("Defining a domain to solve is a matter of:")]),t._v(" "),e("ul",[e("li",[t._v("selecting a base domain class ("),e("code",[t._v("Domain")]),t._v(" by default or any pre-made template for typical combinations like "),e("code",[t._v("DeterministicPlanningDomain")]),t._v(")")]),t._v(" "),e("li",[t._v("fine-tuning any necessary characteristic level with something more specialized (lower-level)")]),t._v(" "),e("li",[t._v("auto-generating the code skeleton from the combination above (technically by implementing all abstract methods)")]),t._v(" "),e("li",[t._v("filling the code as needed based on domain expertise")])]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("When starting a new domain or solver, it is highly recommended to check the "),e("a",{attrs:{href:"#code-generators"}},[t._v("code generators")]),t._v(" for assistance and auto-generation of the skeleton to fill.")])]),t._v(" "),e("p",[t._v("Check "),e("a",{attrs:{href:"#how-to"}},[t._v("How to")]),t._v(" to see how to find compatible solvers and compute a solution, once a domain is defined.")]),t._v(" "),e("h2",{attrs:{id:"how-to"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#how-to"}},[t._v("#")]),t._v(" How to")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("Exact prints and outputs may vary depending on which domains/solvers are registered on your system.")])]),t._v(" "),e("h3",{attrs:{id:"select-a-domain-to-solve"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#select-a-domain-to-solve"}},[t._v("#")]),t._v(" Select a domain to solve")]),t._v(" "),e("p",[t._v("This step can be skipped if a domain has already been defined. Otherwise, here is how to load one from the catalog of registered domains:")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" skdecide "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" utils\n\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("print")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("utils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("get_registered_domains"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# prints: ['GymDomain', 'MasterMind', 'Maze', 'RockPaperScissors', ...]")]),t._v("\n\nMyDomain "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" utils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("load_registered_domain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token string"}},[t._v("'Maze'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"find-compatible-solvers"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#find-compatible-solvers"}},[t._v("#")]),t._v(" Find compatible solvers")]),t._v(" "),e("p",[t._v("This step can be skipped if a solver is already known to be compatible and selected as best candidate. Otherwise, here is how to find all compatible solvers:")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[t._v("compatible_solvers "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" utils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("match_solvers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("print")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("compatible_solvers"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# prints: [, ...]")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# select Lazy A* solver and instanciate with default parameters")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("from")]),t._v(" skdecide"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("hub"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("solver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("lazy_astar "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" LazyAstar\nmysolver "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" LazyAstar"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"compute-a-solution"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#compute-a-solution"}},[t._v("#")]),t._v(" Compute a solution")]),t._v(" "),e("p",[t._v("Here is how to solve "),e("code",[t._v("MyDomain")]),t._v(" with "),e("code",[t._v("mysolver")]),t._v(":")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[t._v("MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("solve_with"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("h3",{attrs:{id:"test-the-solution"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#test-the-solution"}},[t._v("#")]),t._v(" Test the solution")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Simple case (one basic rollout)")]),t._v("\nutils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("rollout"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Example of additional rollout parameters")]),t._v("\nutils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("rollout"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" num_episodes"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("3")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" max_steps"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1000")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" max_framerate"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("30")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("p",[t._v("In the example of the Maze solved with Lazy A*, the goal (in green) should be reached by the agent (in blue):")]),t._v(" "),e("img",{attrs:{src:t.$withBase("/maze.png"),alt:"Maze"}}),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("The rendering of the maze is done in a separate window when running in a local python script.\nTo get a similar result in a jupyter notebook, add a line")]),t._v(" "),e("div",{staticClass:"language-jupyter extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v("%matplotlib qt\n")])])]),e("p",[t._v("before calling "),e("code",[t._v("rollout()")]),t._v(". See also the available "),e("router-link",{attrs:{to:"/notebooks"}},[t._v("tutorial notebooks")]),t._v("\nto know how to render the maze inline.")],1)]),t._v(" "),e("h3",{attrs:{id:"clean-up-the-solver"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#clean-up-the-solver"}},[t._v("#")]),t._v(" Clean up the solver")]),t._v(" "),e("p",[t._v("Some solvers (especially parallel C++ ones) need to be properly cleaned once used.")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[t._v("mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_cleanup"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("Note that this is automatically done if you use the solver within a "),e("code",[t._v("with")]),t._v(" statement:")]),t._v(" "),e("div",{staticClass:"language-python extra-class"},[e("pre",{pre:!0,attrs:{class:"language-python"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("with")]),t._v(" LazyAstar"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("as")]),t._v(" mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("solve_with"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n utils"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("rollout"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyDomain"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" mysolver"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),e("h2",{attrs:{id:"examples"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#examples"}},[t._v("#")]),t._v(" Examples")]),t._v(" "),e("h3",{attrs:{id:"notebooks"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#notebooks"}},[t._v("#")]),t._v(" Notebooks")]),t._v(" "),e("p",[t._v("Go to the dedicated "),e("router-link",{attrs:{to:"/notebooks"}},[t._v("Notebooks")]),t._v(" page to see a curated list of notebooks recommended to start with scikit-decide.")],1),t._v(" "),e("h3",{attrs:{id:"python-scripts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#python-scripts"}},[t._v("#")]),t._v(" Python scripts")]),t._v(" "),e("p",[t._v("More examples can be found in the "),e("code",[t._v("examples/")]),t._v(" folder, showing how to import or define a domain, and how to run or solve it. Most of the examples rely on scikit-decide Hub, an extensible catalog of domains/solvers.")]),t._v(" "),e("h3",{attrs:{id:"playground"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#playground"}},[t._v("#")]),t._v(" Playground")]),t._v(" "),e("p",[t._v("The best example to try out scikit-decide capabilities might be "),e("code",[t._v("examples/full_multisolve.py")]),t._v(". This interactive console experience makes it easy to pick a domain among a pre-defined catalog selection:")]),t._v(" "),e("ul",[e("li",[t._v("Simple Grid World")]),t._v(" "),e("li",[t._v("Maze")]),t._v(" "),e("li",[t._v("Mastermind")]),t._v(" "),e("li",[t._v("Cart Pole (OpenAI Gym)")]),t._v(" "),e("li",[t._v("Mountain Car continuous (OpenAI Gym)")]),t._v(" "),e("li",[t._v("ATARI Pacman (OpenAI Gym)")])]),t._v(" "),e("p",[t._v("...and then solve it with any compatible solver (detected automatically) among following selection:")]),t._v(" "),e("ul",[e("li",[t._v("Random walk")]),t._v(" "),e("li",[t._v("Simple greedy")]),t._v(" "),e("li",[t._v("Lazy A* (classical planning)")]),t._v(" "),e("li",[t._v("PPO: Proximal Policy Optimization (deep reinforcement learning)")]),t._v(" "),e("li",[t._v("POMCP: Partially Observable Monte-Carlo Planning (online planning for POMDP)")]),t._v(" "),e("li",[t._v("CGP: Cartesian Genetic Programming (evolution strategy)")]),t._v(" "),e("li",[t._v("IW: Iterated Width search (width-based planning)")])]),t._v(" "),e("p",[e("strong",[t._v("Note")]),t._v(": some requirements declared in above solvers still need fine-tuning, so in some cases an auto-detected compatible solver may still be unable to solve a domain (for now).")]),t._v(" "),e("p",[t._v("These combinations are particularly efficient if you want to try them out:")]),t._v(" "),e("ul",[e("li",[t._v("Simple Grid World -> Lazy A*")]),t._v(" "),e("li",[t._v("Maze -> Lazy A*")]),t._v(" "),e("li",[t._v("Mastermind -> POMCP: Partially Observable Monte-Carlo Planning")]),t._v(" "),e("li",[t._v("Cart Pole -> PPO: Proximal Policy Optimization")]),t._v(" "),e("li",[t._v("Mountain Car continuous -> CGP: Cartesian Genetic Programming")]),t._v(" "),e("li",[t._v("ATARI Pacman -> Random walk")])]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("Some domains/solvers might require extra manual setup steps to work at 100%.\nIn the future, each scikit-decide hub entry might have a dedicated help page to list them, but in the meantime please refer to this:")]),t._v(" "),e("ul",[e("li",[t._v("OpenAI Gym domains: "),e("a",{attrs:{href:"http://gym.openai.com/docs/#installation",target:"_blank",rel:"noopener noreferrer"}},[t._v("OpenAI Gym"),e("OutboundLink")],1),t._v(" for loading Gym environments not included by default (e.g. atari games).")])])]),t._v(" "),e("h2",{attrs:{id:"code-generators"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#code-generators"}},[t._v("#")]),t._v(" Code generators")]),t._v(" "),e("p",[t._v("Go to "),e("router-link",{attrs:{to:"/codegen"}},[t._v("Code generators")]),t._v(" for assistance when creating a new domain or solver.")],1),t._v(" "),e("h2",{attrs:{id:"roadmap"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#roadmap"}},[t._v("#")]),t._v(" Roadmap")]),t._v(" "),e("p",[t._v("Following features will be added to scikit-decide soon:")]),t._v(" "),e("ul",[e("li",[t._v("Scheduling API")]),t._v(" "),e("li",[t._v("PDDL parser")])])])}),[],!1,null,null,null);a.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/20.a340f56c.js b/assets/js/20.95e31e08.js similarity index 99% rename from assets/js/20.a340f56c.js rename to assets/js/20.95e31e08.js index ef36f794fb..1e85bc49d7 100644 --- a/assets/js/20.a340f56c.js +++ b/assets/js/20.95e31e08.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{583:function(n,t,e){"use strict";e.r(t);var a=e(38),s=Object(a.a)({},(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":n.$parent.slotKey}},[e("h1",{attrs:{id:"installation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installation"}},[n._v("#")]),n._v(" Installation")]),n._v(" "),e("h2",{attrs:{id:"prerequisites"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[n._v("#")]),n._v(" Prerequisites")]),n._v(" "),e("h3",{attrs:{id:"minizinc-2-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#minizinc-2-6"}},[n._v("#")]),n._v(" Minizinc 2.6+")]),n._v(" "),e("p",[n._v("You need to install "),e("a",{attrs:{href:"https://www.minizinc.org/",target:"_blank",rel:"noopener noreferrer"}},[n._v("minizinc"),e("OutboundLink")],1),n._v(" (version greater than 2.6) and update the "),e("code",[n._v("PATH")]),n._v(" environment variable\nso that it can be found by Python. See "),e("a",{attrs:{href:"https://www.minizinc.org/doc-latest/en/installation.html",target:"_blank",rel:"noopener noreferrer"}},[n._v("minizinc documentation"),e("OutboundLink")],1),n._v(" for more details.")]),n._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[n._v("TIP")]),n._v(" "),e("p",[n._v("You can easily install minizinc from the command line, which can be useful when on cloud.\nIn order to make life easier to cloud users, we reproduce below the necessary lines. Please be careful that this\nis not an official documentation for minizinc and that the following lines can stop working without notice\nas we do not test them automatically.")])]),n._v(" "),e("h4",{attrs:{id:"linux-command-line"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#linux-command-line"}},[n._v("#")]),n._v(" Linux command line")]),n._v(" "),e("p",[n._v("On a Linux distribution, you can use the bundled "),e("a",{attrs:{href:"https://www.minizinc.org/doc-latest/en/installation.html#appimage",target:"_blank",rel:"noopener noreferrer"}},[n._v("minizinc AppImage"),e("OutboundLink")],1),n._v(".")]),n._v(" "),e("p",[n._v("If "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Filesystem_in_Userspace",target:"_blank",rel:"noopener noreferrer"}},[n._v("FUSE"),e("OutboundLink")],1),n._v(" is available:")]),n._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[n._v('mkdir minizinc_install\ncurl -o minizinc_install/minizinc -L https://github.com/MiniZinc/MiniZincIDE/releases/download/2.6.3/MiniZincIDE-2.6.3-x86_64.AppImage\nchmod +x minizinc_install/minizinc\nexport PATH="$(pwd)/minizinc_install/":$PATH\nminizinc --version\n')])])]),e("p",[n._v("Else, this is still possible by extracting the files:")]),n._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[n._v('mkdir minizinc_install\ncd minizinc_install\ncurl -o minizinc.AppImage -L https://github.com/MiniZinc/MiniZincIDE/releases/download/2.6.3/MiniZincIDE-2.6.3-x86_64.AppImage\nchmod +x minizinc.AppImage\n./minizinc.AppImage --appimage-extract\ncd ..\nexport LD_LIBRARY_PATH="$(pwd)/minizinc_install/squashfs-root/usr/lib/":$LD_LIBRARY_PATH\nexport PATH="$(pwd)/minizinc_install/squashfs-root/usr/bin/":$PATH\nminizinc --version\n')])])]),e("h4",{attrs:{id:"macos-command-line"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#macos-command-line"}},[n._v("#")]),n._v(" MacOs command line")]),n._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[n._v('mkdir minizinc_install\ncurl -o minizinc.dmg -L https://github.com/MiniZinc/MiniZincIDE/releases/download/2.6.3/MiniZincIDE-2.6.3-bundled.dmg\nhdiutil attach minizinc.dmg\ncp -R /Volumes/MiniZinc*/MiniZincIDE.app minizinc_install/.\nexport PATH="$(pwd)/minizinc_install/MiniZincIDE.app/Contents/Resources":$PATH\nminizinc --version\n')])])]),e("h4",{attrs:{id:"windows-command-line"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#windows-command-line"}},[n._v("#")]),n._v(" Windows command line")]),n._v(" "),e("p",[n._v("Works on Windows Server 2022 with bash shell:")]),n._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[n._v('mkdir minizinc_install\ncurl -o minizinc_setup.exe -L https://github.com/MiniZinc/MiniZincIDE/releases/download/2.6.3/MiniZincIDE-2.6.3-bundled-setup-win64.exe\ncmd //c "minizinc_setup.exe /verysilent /currentuser /norestart /suppressmsgboxes /sp"\nexport PATH="~/AppData/Local/Programs/MiniZinc":$PATH\nminizinc --version\n')])])]),e("h4",{attrs:{id:"skipping-minizinc-version-check"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#skipping-minizinc-version-check"}},[n._v("#")]),n._v(" Skipping minizinc version check")]),n._v(" "),e("p",[n._v("It may happen that you do not want to install minzinc.\nFor instance if you need to use only a part of the library which is not relying on minizinc at all,\nespecially when not relying on discrete-optimization which is the actual library depending on minizinc.")]),n._v(" "),e("p",[n._v("This can be troublesome as the minizinc binary version is checked by "),e("a",{attrs:{href:"https://airbus.github.io/discrete-optimization",target:"_blank",rel:"noopener noreferrer"}},[n._v("discrete-optimization"),e("OutboundLink")],1),n._v(" at library import.\nHowever discrete-optimization provides a way to bypass this check\nby setting the environment variable DO_SKIP_MZN_CHECK:")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[n._v("export")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token assign-left variable"}},[n._v("DO_SKIP_MZN_CHECK")]),e("span",{pre:!0,attrs:{class:"token operator"}},[n._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("1")]),n._v("\n")])])]),e("p",[n._v("Please note however that the library is never tested without minizinc (or minizinc versions < 2.6).")]),n._v(" "),e("h3",{attrs:{id:"python-3-7-environment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#python-3-7-environment"}},[n._v("#")]),n._v(" Python 3.7+ environment")]),n._v(" "),e("p",[n._v("The use of a virtual environment for scikit-decide is recommended, and you will need to ensure that the environment use a Python version greater than 3.7.\nThis can be achieved either by using "),e("a",{attrs:{href:"https://docs.conda.io/en/latest/",target:"_blank",rel:"noopener noreferrer"}},[n._v("conda"),e("OutboundLink")],1),n._v(" or by using "),e("a",{attrs:{href:"https://github.com/pyenv/pyenv",target:"_blank",rel:"noopener noreferrer"}},[n._v("pyenv"),e("OutboundLink")],1),n._v(" (or "),e("a",{attrs:{href:"https://github.com/pyenv-win/pyenv-win",target:"_blank",rel:"noopener noreferrer"}},[n._v("pyenv-win"),e("OutboundLink")],1),n._v(" on windows)\nand "),e("a",{attrs:{href:"https://docs.python.org/fr/3/library/venv.html",target:"_blank",rel:"noopener noreferrer"}},[n._v("venv"),e("OutboundLink")],1),n._v(" module.")]),n._v(" "),e("p",[n._v("The following examples show how to create a virtual environment with Python version 3.8.13 with the mentioned methods.")]),n._v(" "),e("h4",{attrs:{id:"with-conda-all-platforms"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#with-conda-all-platforms"}},[n._v("#")]),n._v(" With conda (all platforms)")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[n._v("conda create -n skdecide "),e("span",{pre:!0,attrs:{class:"token assign-left variable"}},[n._v("python")]),e("span",{pre:!0,attrs:{class:"token operator"}},[n._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("3.8")]),n._v(".13\nconda activate skdecide\n")])])]),e("h4",{attrs:{id:"with-pyenv-venv-linux-macos"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#with-pyenv-venv-linux-macos"}},[n._v("#")]),n._v(" With pyenv + venv (Linux/MacOS)")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[n._v("pyenv "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("3.8")]),n._v(".13\npyenv shell "),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("3.8")]),n._v(".13\npython -m venv skdecide-venv\n"),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[n._v("source")]),n._v(" skdecide-venv/bin/activate\n")])])]),e("h4",{attrs:{id:"with-pyenv-win-venv-windows"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#with-pyenv-win-venv-windows"}},[n._v("#")]),n._v(" With pyenv-win + venv (Windows)")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[n._v("pyenv "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("3.8")]),n._v(".13\npyenv shell "),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("3.8")]),n._v(".13\npython -m venv skdecide-venv\nskdecide-venv"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("\\")]),n._v("Scripts"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("\\")]),n._v("activate\n")])])]),e("h2",{attrs:{id:"install-scikit-decide-library"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-scikit-decide-library"}},[n._v("#")]),n._v(" Install scikit-decide library")]),n._v(" "),e("h3",{attrs:{id:"full-install-recommended"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#full-install-recommended"}},[n._v("#")]),n._v(" Full install [Recommended]")]),n._v(" "),e("p",[n._v("Install scikit-decide library from PyPI with all dependencies required by domains/solvers in the hub (scikit-decide catalog).")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[n._v("pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" -U pip\npip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" -U scikit-decide"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("[")]),n._v("all"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("]")]),n._v("\n")])])]),e("h3",{attrs:{id:"minimal-install"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#minimal-install"}},[n._v("#")]),n._v(" Minimal install")]),n._v(" "),e("p",[n._v("Alternatively you can choose to only install the core library, which is enough if you intend to create your own domain and solver.")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[n._v("pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" -U pip\npip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" -U scikit-decide\n")])])]),e("h2",{attrs:{id:"troubleshooting"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[n._v("#")]),n._v(" Troubleshooting")]),n._v(" "),e("p",[n._v("You may encounter an "),e("a",{attrs:{href:"https://github.com/openai/gym/issues/3176",target:"_blank",rel:"noopener noreferrer"}},[n._v("error when installing "),e("code",[n._v("gym==0.21.0")]),e("OutboundLink")],1),n._v(" which happens to be a dependency of "),e("code",[n._v("scikit-decide[all]")]),n._v(".\nThis is because its installation does not respect PEP 517 which is enforced by default by last versions of pip and setuptools.\nThe solution is to install it beforehand:")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# preinstall gym==0.21.0 with legacy method (python setup.py) because its requirements list is broken")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"pip==22"')]),n._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# starting with pip 23.1, gym 0.21.0 is not intallable anymore")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"setuptools<67"')]),n._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# starting with setuptools 67, gym 0.21.0 is not intallable anymore")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"importlib-metadata<5"')]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"virtualenv==20.16.6"')]),n._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# cannot import gym with importlib-metadata >= 5 and python<3.8")]),n._v("\npython -m pip uninstall -y wheel "),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# wheel must not be here to fall back directly to python setup.py")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token assign-left variable"}},[n._v("gym")]),e("span",{pre:!0,attrs:{class:"token operator"}},[n._v("==")]),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("0.21")]),n._v(".0 --no-use-pep517\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# preinstall ray[rllib]<2.3.0 because starting from 2.3.0, ray also install gym > 0.21")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" --upgrade pip\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"ray[rllib]<2.3.0"')]),n._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# preinstall stable-baselines3<2.0.0 because starting from 2.0.0, stable-baselines3 requires gym > 0.26")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"stable-baselines3<2.0.0"')]),n._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# install scikit-decide and remaining dependencies")]),n._v("\npip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" -U scikit-decide"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("[")]),n._v("all"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("]")]),n._v("\n")])])]),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[n._v("Note")]),n._v(" "),e("p",[n._v("Newer versions of gym or "),e("a",{attrs:{href:"https://gymnasium.farama.org/",target:"_blank",rel:"noopener noreferrer"}},[n._v("gymnasium"),e("OutboundLink")],1),n._v(", typically greater than 0.26 are not yet possible\nbecause of a conflict between "),e("a",{attrs:{href:"https://github.com/ray-project/ray/issues/34396",target:"_blank",rel:"noopener noreferrer"}},[e("code",[n._v("ray[rllib]")]),e("OutboundLink")],1),n._v("\nand "),e("a",{attrs:{href:"https://github.com/DLR-RM/stable-baselines3/issues/1452",target:"_blank",rel:"noopener noreferrer"}},[e("code",[n._v("stable-baselines3")]),e("OutboundLink")],1),n._v(".")])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{622:function(n,t,e){"use strict";e.r(t);var a=e(38),s=Object(a.a)({},(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":n.$parent.slotKey}},[e("h1",{attrs:{id:"installation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installation"}},[n._v("#")]),n._v(" Installation")]),n._v(" "),e("h2",{attrs:{id:"prerequisites"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#prerequisites"}},[n._v("#")]),n._v(" Prerequisites")]),n._v(" "),e("h3",{attrs:{id:"minizinc-2-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#minizinc-2-6"}},[n._v("#")]),n._v(" Minizinc 2.6+")]),n._v(" "),e("p",[n._v("You need to install "),e("a",{attrs:{href:"https://www.minizinc.org/",target:"_blank",rel:"noopener noreferrer"}},[n._v("minizinc"),e("OutboundLink")],1),n._v(" (version greater than 2.6) and update the "),e("code",[n._v("PATH")]),n._v(" environment variable\nso that it can be found by Python. See "),e("a",{attrs:{href:"https://www.minizinc.org/doc-latest/en/installation.html",target:"_blank",rel:"noopener noreferrer"}},[n._v("minizinc documentation"),e("OutboundLink")],1),n._v(" for more details.")]),n._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[n._v("TIP")]),n._v(" "),e("p",[n._v("You can easily install minizinc from the command line, which can be useful when on cloud.\nIn order to make life easier to cloud users, we reproduce below the necessary lines. Please be careful that this\nis not an official documentation for minizinc and that the following lines can stop working without notice\nas we do not test them automatically.")])]),n._v(" "),e("h4",{attrs:{id:"linux-command-line"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#linux-command-line"}},[n._v("#")]),n._v(" Linux command line")]),n._v(" "),e("p",[n._v("On a Linux distribution, you can use the bundled "),e("a",{attrs:{href:"https://www.minizinc.org/doc-latest/en/installation.html#appimage",target:"_blank",rel:"noopener noreferrer"}},[n._v("minizinc AppImage"),e("OutboundLink")],1),n._v(".")]),n._v(" "),e("p",[n._v("If "),e("a",{attrs:{href:"https://en.wikipedia.org/wiki/Filesystem_in_Userspace",target:"_blank",rel:"noopener noreferrer"}},[n._v("FUSE"),e("OutboundLink")],1),n._v(" is available:")]),n._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[n._v('mkdir minizinc_install\ncurl -o minizinc_install/minizinc -L https://github.com/MiniZinc/MiniZincIDE/releases/download/2.6.3/MiniZincIDE-2.6.3-x86_64.AppImage\nchmod +x minizinc_install/minizinc\nexport PATH="$(pwd)/minizinc_install/":$PATH\nminizinc --version\n')])])]),e("p",[n._v("Else, this is still possible by extracting the files:")]),n._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[n._v('mkdir minizinc_install\ncd minizinc_install\ncurl -o minizinc.AppImage -L https://github.com/MiniZinc/MiniZincIDE/releases/download/2.6.3/MiniZincIDE-2.6.3-x86_64.AppImage\nchmod +x minizinc.AppImage\n./minizinc.AppImage --appimage-extract\ncd ..\nexport LD_LIBRARY_PATH="$(pwd)/minizinc_install/squashfs-root/usr/lib/":$LD_LIBRARY_PATH\nexport PATH="$(pwd)/minizinc_install/squashfs-root/usr/bin/":$PATH\nminizinc --version\n')])])]),e("h4",{attrs:{id:"macos-command-line"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#macos-command-line"}},[n._v("#")]),n._v(" MacOs command line")]),n._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[n._v('mkdir minizinc_install\ncurl -o minizinc.dmg -L https://github.com/MiniZinc/MiniZincIDE/releases/download/2.6.3/MiniZincIDE-2.6.3-bundled.dmg\nhdiutil attach minizinc.dmg\ncp -R /Volumes/MiniZinc*/MiniZincIDE.app minizinc_install/.\nexport PATH="$(pwd)/minizinc_install/MiniZincIDE.app/Contents/Resources":$PATH\nminizinc --version\n')])])]),e("h4",{attrs:{id:"windows-command-line"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#windows-command-line"}},[n._v("#")]),n._v(" Windows command line")]),n._v(" "),e("p",[n._v("Works on Windows Server 2022 with bash shell:")]),n._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[n._v('mkdir minizinc_install\ncurl -o minizinc_setup.exe -L https://github.com/MiniZinc/MiniZincIDE/releases/download/2.6.3/MiniZincIDE-2.6.3-bundled-setup-win64.exe\ncmd //c "minizinc_setup.exe /verysilent /currentuser /norestart /suppressmsgboxes /sp"\nexport PATH="~/AppData/Local/Programs/MiniZinc":$PATH\nminizinc --version\n')])])]),e("h4",{attrs:{id:"skipping-minizinc-version-check"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#skipping-minizinc-version-check"}},[n._v("#")]),n._v(" Skipping minizinc version check")]),n._v(" "),e("p",[n._v("It may happen that you do not want to install minzinc.\nFor instance if you need to use only a part of the library which is not relying on minizinc at all,\nespecially when not relying on discrete-optimization which is the actual library depending on minizinc.")]),n._v(" "),e("p",[n._v("This can be troublesome as the minizinc binary version is checked by "),e("a",{attrs:{href:"https://airbus.github.io/discrete-optimization",target:"_blank",rel:"noopener noreferrer"}},[n._v("discrete-optimization"),e("OutboundLink")],1),n._v(" at library import.\nHowever discrete-optimization provides a way to bypass this check\nby setting the environment variable DO_SKIP_MZN_CHECK:")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[n._v("export")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token assign-left variable"}},[n._v("DO_SKIP_MZN_CHECK")]),e("span",{pre:!0,attrs:{class:"token operator"}},[n._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("1")]),n._v("\n")])])]),e("p",[n._v("Please note however that the library is never tested without minizinc (or minizinc versions < 2.6).")]),n._v(" "),e("h3",{attrs:{id:"python-3-7-environment"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#python-3-7-environment"}},[n._v("#")]),n._v(" Python 3.7+ environment")]),n._v(" "),e("p",[n._v("The use of a virtual environment for scikit-decide is recommended, and you will need to ensure that the environment use a Python version greater than 3.7.\nThis can be achieved either by using "),e("a",{attrs:{href:"https://docs.conda.io/en/latest/",target:"_blank",rel:"noopener noreferrer"}},[n._v("conda"),e("OutboundLink")],1),n._v(" or by using "),e("a",{attrs:{href:"https://github.com/pyenv/pyenv",target:"_blank",rel:"noopener noreferrer"}},[n._v("pyenv"),e("OutboundLink")],1),n._v(" (or "),e("a",{attrs:{href:"https://github.com/pyenv-win/pyenv-win",target:"_blank",rel:"noopener noreferrer"}},[n._v("pyenv-win"),e("OutboundLink")],1),n._v(" on windows)\nand "),e("a",{attrs:{href:"https://docs.python.org/fr/3/library/venv.html",target:"_blank",rel:"noopener noreferrer"}},[n._v("venv"),e("OutboundLink")],1),n._v(" module.")]),n._v(" "),e("p",[n._v("The following examples show how to create a virtual environment with Python version 3.8.13 with the mentioned methods.")]),n._v(" "),e("h4",{attrs:{id:"with-conda-all-platforms"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#with-conda-all-platforms"}},[n._v("#")]),n._v(" With conda (all platforms)")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[n._v("conda create -n skdecide "),e("span",{pre:!0,attrs:{class:"token assign-left variable"}},[n._v("python")]),e("span",{pre:!0,attrs:{class:"token operator"}},[n._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("3.8")]),n._v(".13\nconda activate skdecide\n")])])]),e("h4",{attrs:{id:"with-pyenv-venv-linux-macos"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#with-pyenv-venv-linux-macos"}},[n._v("#")]),n._v(" With pyenv + venv (Linux/MacOS)")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[n._v("pyenv "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("3.8")]),n._v(".13\npyenv shell "),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("3.8")]),n._v(".13\npython -m venv skdecide-venv\n"),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[n._v("source")]),n._v(" skdecide-venv/bin/activate\n")])])]),e("h4",{attrs:{id:"with-pyenv-win-venv-windows"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#with-pyenv-win-venv-windows"}},[n._v("#")]),n._v(" With pyenv-win + venv (Windows)")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[n._v("pyenv "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("3.8")]),n._v(".13\npyenv shell "),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("3.8")]),n._v(".13\npython -m venv skdecide-venv\nskdecide-venv"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("\\")]),n._v("Scripts"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("\\")]),n._v("activate\n")])])]),e("h2",{attrs:{id:"install-scikit-decide-library"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-scikit-decide-library"}},[n._v("#")]),n._v(" Install scikit-decide library")]),n._v(" "),e("h3",{attrs:{id:"full-install-recommended"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#full-install-recommended"}},[n._v("#")]),n._v(" Full install [Recommended]")]),n._v(" "),e("p",[n._v("Install scikit-decide library from PyPI with all dependencies required by domains/solvers in the hub (scikit-decide catalog).")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[n._v("pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" -U pip\npip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" -U scikit-decide"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("[")]),n._v("all"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("]")]),n._v("\n")])])]),e("h3",{attrs:{id:"minimal-install"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#minimal-install"}},[n._v("#")]),n._v(" Minimal install")]),n._v(" "),e("p",[n._v("Alternatively you can choose to only install the core library, which is enough if you intend to create your own domain and solver.")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[n._v("pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" -U pip\npip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" -U scikit-decide\n")])])]),e("h2",{attrs:{id:"troubleshooting"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[n._v("#")]),n._v(" Troubleshooting")]),n._v(" "),e("p",[n._v("You may encounter an "),e("a",{attrs:{href:"https://github.com/openai/gym/issues/3176",target:"_blank",rel:"noopener noreferrer"}},[n._v("error when installing "),e("code",[n._v("gym==0.21.0")]),e("OutboundLink")],1),n._v(" which happens to be a dependency of "),e("code",[n._v("scikit-decide[all]")]),n._v(".\nThis is because its installation does not respect PEP 517 which is enforced by default by last versions of pip and setuptools.\nThe solution is to install it beforehand:")]),n._v(" "),e("div",{staticClass:"language-shell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-shell"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# preinstall gym==0.21.0 with legacy method (python setup.py) because its requirements list is broken")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"pip==22"')]),n._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# starting with pip 23.1, gym 0.21.0 is not intallable anymore")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"setuptools<67"')]),n._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# starting with setuptools 67, gym 0.21.0 is not intallable anymore")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"importlib-metadata<5"')]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"virtualenv==20.16.6"')]),n._v(" "),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# cannot import gym with importlib-metadata >= 5 and python<3.8")]),n._v("\npython -m pip uninstall -y wheel "),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# wheel must not be here to fall back directly to python setup.py")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token assign-left variable"}},[n._v("gym")]),e("span",{pre:!0,attrs:{class:"token operator"}},[n._v("==")]),e("span",{pre:!0,attrs:{class:"token number"}},[n._v("0.21")]),n._v(".0 --no-use-pep517\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# preinstall ray[rllib]<2.3.0 because starting from 2.3.0, ray also install gym > 0.21")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" --upgrade pip\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"ray[rllib]<2.3.0"')]),n._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# preinstall stable-baselines3<2.0.0 because starting from 2.0.0, stable-baselines3 requires gym > 0.26")]),n._v("\npython -m pip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[n._v('"stable-baselines3<2.0.0"')]),n._v("\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[n._v("# install scikit-decide and remaining dependencies")]),n._v("\npip "),e("span",{pre:!0,attrs:{class:"token function"}},[n._v("install")]),n._v(" -U scikit-decide"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("[")]),n._v("all"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[n._v("]")]),n._v("\n")])])]),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[n._v("Note")]),n._v(" "),e("p",[n._v("Newer versions of gym or "),e("a",{attrs:{href:"https://gymnasium.farama.org/",target:"_blank",rel:"noopener noreferrer"}},[n._v("gymnasium"),e("OutboundLink")],1),n._v(", typically greater than 0.26 are not yet possible\nbecause of a conflict between "),e("a",{attrs:{href:"https://github.com/ray-project/ray/issues/34396",target:"_blank",rel:"noopener noreferrer"}},[e("code",[n._v("ray[rllib]")]),e("OutboundLink")],1),n._v("\nand "),e("a",{attrs:{href:"https://github.com/DLR-RM/stable-baselines3/issues/1452",target:"_blank",rel:"noopener noreferrer"}},[e("code",[n._v("stable-baselines3")]),e("OutboundLink")],1),n._v(".")])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/22.6c7e043d.js b/assets/js/22.6e2f82e7.js similarity index 99% rename from assets/js/22.6c7e043d.js rename to assets/js/22.6e2f82e7.js index 061e2cbabd..f5dbe8a436 100644 --- a/assets/js/22.6c7e043d.js +++ b/assets/js/22.6e2f82e7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{558:function(r,t,s){"use strict";s.r(t);var e=s(38),a=Object(e.a)({},(function(){var r=this,t=r.$createElement,s=r._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[s("h1",{attrs:{id:"reference"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[r._v("#")]),r._v(" Reference")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.core"}},[r._v("core")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.domains"}},[r._v("domains")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.solvers"}},[r._v("solvers")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.utils"}},[r._v("utils")])],1)]),r._v(" "),s("h2",{attrs:{id:"builders"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders"}},[r._v("#")]),r._v(" builders")]),r._v(" "),s("h3",{attrs:{id:"domain"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#domain"}},[r._v("#")]),r._v(" domain")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.agent"}},[r._v("agent")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.concurrency"}},[r._v("concurrency")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.constraints"}},[r._v("constraints")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.dynamics"}},[r._v("dynamics")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.events"}},[r._v("events")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.goals"}},[r._v("goals")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.initialization"}},[r._v("initialization")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.memory"}},[r._v("memory")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.observability"}},[r._v("observability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.renderability"}},[r._v("renderability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.value"}},[r._v("value")])],1)]),r._v(" "),s("h4",{attrs:{id:"scheduling"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#scheduling"}},[r._v("#")]),r._v(" scheduling")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.conditional_tasks"}},[r._v("conditional_tasks")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.graph_toolbox"}},[r._v("graph_toolbox")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.modes"}},[r._v("modes")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.preallocations"}},[r._v("preallocations")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.precedence"}},[r._v("precedence")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.preemptivity"}},[r._v("preemptivity")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.resource_availability"}},[r._v("resource_availability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.resource_consumption"}},[r._v("resource_consumption")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.resource_costs"}},[r._v("resource_costs")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.resource_renewability"}},[r._v("resource_renewability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.resource_type"}},[r._v("resource_type")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.scheduling_domains"}},[r._v("scheduling_domains")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.scheduling_domains_modelling"}},[r._v("scheduling_domains_modelling")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.skills"}},[r._v("skills")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.task"}},[r._v("task")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.task_duration"}},[r._v("task_duration")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.task_progress"}},[r._v("task_progress")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.time_lag"}},[r._v("time_lag")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.time_windows"}},[r._v("time_windows")])],1)]),r._v(" "),s("h3",{attrs:{id:"solver"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#solver"}},[r._v("#")]),r._v(" solver")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.builders.solver.assessability"}},[r._v("assessability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.solver.parallelability"}},[r._v("parallelability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.solver.policy"}},[r._v("policy")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.solver.restorability"}},[r._v("restorability")])],1)]),r._v(" "),s("h2",{attrs:{id:"hub"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub"}},[r._v("#")]),r._v(" hub")]),r._v(" "),s("h3",{attrs:{id:"domain-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#domain-2"}},[r._v("#")]),r._v(" domain")]),r._v(" "),s("h4",{attrs:{id:"gym"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gym"}},[r._v("#")]),r._v(" gym")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.gym.gym"}},[r._v("gym")])],1)]),r._v(" "),s("h4",{attrs:{id:"mastermind"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mastermind"}},[r._v("#")]),r._v(" mastermind")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.mastermind.mastermind"}},[r._v("mastermind")])],1)]),r._v(" "),s("h4",{attrs:{id:"maze"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#maze"}},[r._v("#")]),r._v(" maze")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.maze.maze"}},[r._v("maze")])],1)]),r._v(" "),s("h4",{attrs:{id:"rcpsp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rcpsp"}},[r._v("#")]),r._v(" rcpsp")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.rcpsp.rcpsp_sk"}},[r._v("rcpsp_sk")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.rcpsp.rcpsp_sk_parser"}},[r._v("rcpsp_sk_parser")])],1)]),r._v(" "),s("h4",{attrs:{id:"rock-paper-scissors"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rock-paper-scissors"}},[r._v("#")]),r._v(" rock_paper_scissors")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.rock_paper_scissors.rock_paper_scissors"}},[r._v("rock_paper_scissors")])],1)]),r._v(" "),s("h4",{attrs:{id:"simple-grid-world"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#simple-grid-world"}},[r._v("#")]),r._v(" simple_grid_world")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.simple_grid_world.simple_grid_world"}},[r._v("simple_grid_world")])],1)]),r._v(" "),s("h3",{attrs:{id:"solver-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#solver-2"}},[r._v("#")]),r._v(" solver")]),r._v(" "),s("h4",{attrs:{id:"aostar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#aostar"}},[r._v("#")]),r._v(" aostar")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.aostar.aostar"}},[r._v("aostar")])],1)]),r._v(" "),s("h4",{attrs:{id:"ars"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ars"}},[r._v("#")]),r._v(" ars")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.ars.ars"}},[r._v("ars")])],1)]),r._v(" "),s("h4",{attrs:{id:"astar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#astar"}},[r._v("#")]),r._v(" astar")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.astar.astar"}},[r._v("astar")])],1)]),r._v(" "),s("h4",{attrs:{id:"bfws"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bfws"}},[r._v("#")]),r._v(" bfws")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.bfws.bfws"}},[r._v("bfws")])],1)]),r._v(" "),s("h4",{attrs:{id:"cgp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cgp"}},[r._v("#")]),r._v(" cgp")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.cgp.cgp"}},[r._v("cgp")])],1)]),r._v(" "),s("h4",{attrs:{id:"do-solver"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#do-solver"}},[r._v("#")]),r._v(" do_solver")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.do_solver.do_solver_scheduling"}},[r._v("do_solver_scheduling")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.do_solver.sk_to_do_binding"}},[r._v("sk_to_do_binding")])],1)]),r._v(" "),s("h4",{attrs:{id:"gphh"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gphh"}},[r._v("#")]),r._v(" gphh")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.gphh.gphh"}},[r._v("gphh")])],1)]),r._v(" "),s("h4",{attrs:{id:"graph-explorer"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#graph-explorer"}},[r._v("#")]),r._v(" graph_explorer")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.graph_explorer.DFSExploration"}},[r._v("DFSExploration")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.graph_explorer.DFS_Uncertain_Exploration"}},[r._v("DFS_Uncertain_Exploration")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.graph_explorer.FullSpaceExploration"}},[r._v("FullSpaceExploration")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.graph_explorer.GraphDomain"}},[r._v("GraphDomain")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.graph_explorer.GraphExploration"}},[r._v("GraphExploration")])],1)]),r._v(" "),s("h4",{attrs:{id:"ilaostar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ilaostar"}},[r._v("#")]),r._v(" ilaostar")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.ilaostar.ilaostar"}},[r._v("ilaostar")])],1)]),r._v(" "),s("h4",{attrs:{id:"iw"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#iw"}},[r._v("#")]),r._v(" iw")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.iw.iw"}},[r._v("iw")])],1)]),r._v(" "),s("h4",{attrs:{id:"lazy-astar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lazy-astar"}},[r._v("#")]),r._v(" lazy_astar")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.lazy_astar.lazy_astar"}},[r._v("lazy_astar")])],1)]),r._v(" "),s("h4",{attrs:{id:"lrtastar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lrtastar"}},[r._v("#")]),r._v(" lrtastar")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.lrtastar.lrtastar"}},[r._v("lrtastar")])],1)]),r._v(" "),s("h4",{attrs:{id:"lrtdp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lrtdp"}},[r._v("#")]),r._v(" lrtdp")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.lrtdp.lrtdp"}},[r._v("lrtdp")])],1)]),r._v(" "),s("h4",{attrs:{id:"mahd"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mahd"}},[r._v("#")]),r._v(" mahd")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.mahd.mahd"}},[r._v("mahd")])],1)]),r._v(" "),s("h4",{attrs:{id:"martdp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#martdp"}},[r._v("#")]),r._v(" martdp")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.martdp.martdp"}},[r._v("martdp")])],1)]),r._v(" "),s("h4",{attrs:{id:"maxent-irl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#maxent-irl"}},[r._v("#")]),r._v(" maxent_irl")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.maxent_irl.maxent_irl"}},[r._v("maxent_irl")])],1)]),r._v(" "),s("h4",{attrs:{id:"mcts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mcts"}},[r._v("#")]),r._v(" mcts")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.mcts.mcts"}},[r._v("mcts")])],1)]),r._v(" "),s("h4",{attrs:{id:"meta-policy"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#meta-policy"}},[r._v("#")]),r._v(" meta_policy")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.meta_policy.meta_policies"}},[r._v("meta_policies")])],1)]),r._v(" "),s("h4",{attrs:{id:"pile-policy"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pile-policy"}},[r._v("#")]),r._v(" pile_policy")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.pile_policy.pile_policy"}},[r._v("pile_policy")])],1)]),r._v(" "),s("h4",{attrs:{id:"policy-evaluators"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#policy-evaluators"}},[r._v("#")]),r._v(" policy_evaluators")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.policy_evaluators.policy_evaluator"}},[r._v("policy_evaluator")])],1)]),r._v(" "),s("h4",{attrs:{id:"pomcp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pomcp"}},[r._v("#")]),r._v(" pomcp")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.pomcp.pomcp"}},[r._v("pomcp")])],1)]),r._v(" "),s("h4",{attrs:{id:"ray-rllib"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ray-rllib"}},[r._v("#")]),r._v(" ray_rllib")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.ray_rllib.ray_rllib"}},[r._v("ray_rllib")])],1)]),r._v(" "),s("h4",{attrs:{id:"riw"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#riw"}},[r._v("#")]),r._v(" riw")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.riw.riw"}},[r._v("riw")])],1)]),r._v(" "),s("h4",{attrs:{id:"sgs-policies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sgs-policies"}},[r._v("#")]),r._v(" sgs_policies")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.sgs_policies.sgs_policies"}},[r._v("sgs_policies")])],1)]),r._v(" "),s("h4",{attrs:{id:"simple-greedy"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#simple-greedy"}},[r._v("#")]),r._v(" simple_greedy")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.simple_greedy.simple_greedy"}},[r._v("simple_greedy")])],1)]),r._v(" "),s("h4",{attrs:{id:"stable-baselines"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#stable-baselines"}},[r._v("#")]),r._v(" stable_baselines")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.stable_baselines.stable_baselines"}},[r._v("stable_baselines")])],1)]),r._v(" "),s("h3",{attrs:{id:"space"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#space"}},[r._v("#")]),r._v(" space")]),r._v(" "),s("h4",{attrs:{id:"gym-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gym-2"}},[r._v("#")]),r._v(" gym")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.space.gym.gym"}},[r._v("gym")])],1)])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{533:function(r,t,s){"use strict";s.r(t);var e=s(38),a=Object(e.a)({},(function(){var r=this,t=r.$createElement,s=r._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":r.$parent.slotKey}},[s("h1",{attrs:{id:"reference"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#reference"}},[r._v("#")]),r._v(" Reference")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.core"}},[r._v("core")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.domains"}},[r._v("domains")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.solvers"}},[r._v("solvers")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.utils"}},[r._v("utils")])],1)]),r._v(" "),s("h2",{attrs:{id:"builders"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders"}},[r._v("#")]),r._v(" builders")]),r._v(" "),s("h3",{attrs:{id:"domain"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#domain"}},[r._v("#")]),r._v(" domain")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.agent"}},[r._v("agent")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.concurrency"}},[r._v("concurrency")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.constraints"}},[r._v("constraints")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.dynamics"}},[r._v("dynamics")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.events"}},[r._v("events")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.goals"}},[r._v("goals")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.initialization"}},[r._v("initialization")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.memory"}},[r._v("memory")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.observability"}},[r._v("observability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.renderability"}},[r._v("renderability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.value"}},[r._v("value")])],1)]),r._v(" "),s("h4",{attrs:{id:"scheduling"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#scheduling"}},[r._v("#")]),r._v(" scheduling")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.conditional_tasks"}},[r._v("conditional_tasks")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.graph_toolbox"}},[r._v("graph_toolbox")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.modes"}},[r._v("modes")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.preallocations"}},[r._v("preallocations")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.precedence"}},[r._v("precedence")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.preemptivity"}},[r._v("preemptivity")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.resource_availability"}},[r._v("resource_availability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.resource_consumption"}},[r._v("resource_consumption")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.resource_costs"}},[r._v("resource_costs")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.resource_renewability"}},[r._v("resource_renewability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.resource_type"}},[r._v("resource_type")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.scheduling_domains"}},[r._v("scheduling_domains")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.scheduling_domains_modelling"}},[r._v("scheduling_domains_modelling")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.skills"}},[r._v("skills")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.task"}},[r._v("task")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.task_duration"}},[r._v("task_duration")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.task_progress"}},[r._v("task_progress")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.time_lag"}},[r._v("time_lag")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.domain.scheduling.time_windows"}},[r._v("time_windows")])],1)]),r._v(" "),s("h3",{attrs:{id:"solver"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#solver"}},[r._v("#")]),r._v(" solver")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.builders.solver.assessability"}},[r._v("assessability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.solver.parallelability"}},[r._v("parallelability")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.solver.policy"}},[r._v("policy")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.builders.solver.restorability"}},[r._v("restorability")])],1)]),r._v(" "),s("h2",{attrs:{id:"hub"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub"}},[r._v("#")]),r._v(" hub")]),r._v(" "),s("h3",{attrs:{id:"domain-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#domain-2"}},[r._v("#")]),r._v(" domain")]),r._v(" "),s("h4",{attrs:{id:"gym"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gym"}},[r._v("#")]),r._v(" gym")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.gym.gym"}},[r._v("gym")])],1)]),r._v(" "),s("h4",{attrs:{id:"mastermind"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mastermind"}},[r._v("#")]),r._v(" mastermind")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.mastermind.mastermind"}},[r._v("mastermind")])],1)]),r._v(" "),s("h4",{attrs:{id:"maze"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#maze"}},[r._v("#")]),r._v(" maze")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.maze.maze"}},[r._v("maze")])],1)]),r._v(" "),s("h4",{attrs:{id:"rcpsp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rcpsp"}},[r._v("#")]),r._v(" rcpsp")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.rcpsp.rcpsp_sk"}},[r._v("rcpsp_sk")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.rcpsp.rcpsp_sk_parser"}},[r._v("rcpsp_sk_parser")])],1)]),r._v(" "),s("h4",{attrs:{id:"rock-paper-scissors"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#rock-paper-scissors"}},[r._v("#")]),r._v(" rock_paper_scissors")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.rock_paper_scissors.rock_paper_scissors"}},[r._v("rock_paper_scissors")])],1)]),r._v(" "),s("h4",{attrs:{id:"simple-grid-world"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#simple-grid-world"}},[r._v("#")]),r._v(" simple_grid_world")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.domain.simple_grid_world.simple_grid_world"}},[r._v("simple_grid_world")])],1)]),r._v(" "),s("h3",{attrs:{id:"solver-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#solver-2"}},[r._v("#")]),r._v(" solver")]),r._v(" "),s("h4",{attrs:{id:"aostar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#aostar"}},[r._v("#")]),r._v(" aostar")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.aostar.aostar"}},[r._v("aostar")])],1)]),r._v(" "),s("h4",{attrs:{id:"ars"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ars"}},[r._v("#")]),r._v(" ars")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.ars.ars"}},[r._v("ars")])],1)]),r._v(" "),s("h4",{attrs:{id:"astar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#astar"}},[r._v("#")]),r._v(" astar")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.astar.astar"}},[r._v("astar")])],1)]),r._v(" "),s("h4",{attrs:{id:"bfws"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#bfws"}},[r._v("#")]),r._v(" bfws")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.bfws.bfws"}},[r._v("bfws")])],1)]),r._v(" "),s("h4",{attrs:{id:"cgp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#cgp"}},[r._v("#")]),r._v(" cgp")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.cgp.cgp"}},[r._v("cgp")])],1)]),r._v(" "),s("h4",{attrs:{id:"do-solver"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#do-solver"}},[r._v("#")]),r._v(" do_solver")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.do_solver.do_solver_scheduling"}},[r._v("do_solver_scheduling")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.do_solver.sk_to_do_binding"}},[r._v("sk_to_do_binding")])],1)]),r._v(" "),s("h4",{attrs:{id:"gphh"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gphh"}},[r._v("#")]),r._v(" gphh")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.gphh.gphh"}},[r._v("gphh")])],1)]),r._v(" "),s("h4",{attrs:{id:"graph-explorer"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#graph-explorer"}},[r._v("#")]),r._v(" graph_explorer")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.graph_explorer.DFSExploration"}},[r._v("DFSExploration")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.graph_explorer.DFS_Uncertain_Exploration"}},[r._v("DFS_Uncertain_Exploration")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.graph_explorer.FullSpaceExploration"}},[r._v("FullSpaceExploration")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.graph_explorer.GraphDomain"}},[r._v("GraphDomain")])],1),r._v(" "),s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.graph_explorer.GraphExploration"}},[r._v("GraphExploration")])],1)]),r._v(" "),s("h4",{attrs:{id:"ilaostar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ilaostar"}},[r._v("#")]),r._v(" ilaostar")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.ilaostar.ilaostar"}},[r._v("ilaostar")])],1)]),r._v(" "),s("h4",{attrs:{id:"iw"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#iw"}},[r._v("#")]),r._v(" iw")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.iw.iw"}},[r._v("iw")])],1)]),r._v(" "),s("h4",{attrs:{id:"lazy-astar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lazy-astar"}},[r._v("#")]),r._v(" lazy_astar")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.lazy_astar.lazy_astar"}},[r._v("lazy_astar")])],1)]),r._v(" "),s("h4",{attrs:{id:"lrtastar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lrtastar"}},[r._v("#")]),r._v(" lrtastar")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.lrtastar.lrtastar"}},[r._v("lrtastar")])],1)]),r._v(" "),s("h4",{attrs:{id:"lrtdp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#lrtdp"}},[r._v("#")]),r._v(" lrtdp")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.lrtdp.lrtdp"}},[r._v("lrtdp")])],1)]),r._v(" "),s("h4",{attrs:{id:"mahd"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mahd"}},[r._v("#")]),r._v(" mahd")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.mahd.mahd"}},[r._v("mahd")])],1)]),r._v(" "),s("h4",{attrs:{id:"martdp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#martdp"}},[r._v("#")]),r._v(" martdp")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.martdp.martdp"}},[r._v("martdp")])],1)]),r._v(" "),s("h4",{attrs:{id:"maxent-irl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#maxent-irl"}},[r._v("#")]),r._v(" maxent_irl")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.maxent_irl.maxent_irl"}},[r._v("maxent_irl")])],1)]),r._v(" "),s("h4",{attrs:{id:"mcts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mcts"}},[r._v("#")]),r._v(" mcts")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.mcts.mcts"}},[r._v("mcts")])],1)]),r._v(" "),s("h4",{attrs:{id:"meta-policy"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#meta-policy"}},[r._v("#")]),r._v(" meta_policy")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.meta_policy.meta_policies"}},[r._v("meta_policies")])],1)]),r._v(" "),s("h4",{attrs:{id:"pile-policy"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pile-policy"}},[r._v("#")]),r._v(" pile_policy")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.pile_policy.pile_policy"}},[r._v("pile_policy")])],1)]),r._v(" "),s("h4",{attrs:{id:"policy-evaluators"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#policy-evaluators"}},[r._v("#")]),r._v(" policy_evaluators")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.policy_evaluators.policy_evaluator"}},[r._v("policy_evaluator")])],1)]),r._v(" "),s("h4",{attrs:{id:"pomcp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#pomcp"}},[r._v("#")]),r._v(" pomcp")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.pomcp.pomcp"}},[r._v("pomcp")])],1)]),r._v(" "),s("h4",{attrs:{id:"ray-rllib"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ray-rllib"}},[r._v("#")]),r._v(" ray_rllib")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.ray_rllib.ray_rllib"}},[r._v("ray_rllib")])],1)]),r._v(" "),s("h4",{attrs:{id:"riw"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#riw"}},[r._v("#")]),r._v(" riw")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.riw.riw"}},[r._v("riw")])],1)]),r._v(" "),s("h4",{attrs:{id:"sgs-policies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sgs-policies"}},[r._v("#")]),r._v(" sgs_policies")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.sgs_policies.sgs_policies"}},[r._v("sgs_policies")])],1)]),r._v(" "),s("h4",{attrs:{id:"simple-greedy"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#simple-greedy"}},[r._v("#")]),r._v(" simple_greedy")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.simple_greedy.simple_greedy"}},[r._v("simple_greedy")])],1)]),r._v(" "),s("h4",{attrs:{id:"stable-baselines"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#stable-baselines"}},[r._v("#")]),r._v(" stable_baselines")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.solver.stable_baselines.stable_baselines"}},[r._v("stable_baselines")])],1)]),r._v(" "),s("h3",{attrs:{id:"space"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#space"}},[r._v("#")]),r._v(" space")]),r._v(" "),s("h4",{attrs:{id:"gym-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#gym-2"}},[r._v("#")]),r._v(" gym")]),r._v(" "),s("ul",[s("li",[s("router-link",{attrs:{to:"_skdecide.hub.space.gym.gym"}},[r._v("gym")])],1)])])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/23.6d04fe51.js b/assets/js/23.d1256449.js similarity index 94% rename from assets/js/23.6d04fe51.js rename to assets/js/23.d1256449.js index 5b05b6cb0b..90a1ea66d5 100644 --- a/assets/js/23.6d04fe51.js +++ b/assets/js/23.d1256449.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{533:function(t,e,i){"use strict";i.r(e);var s=i(38),a=Object(s.a)({},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[i("h1",{attrs:{id:"builders-domain-agent"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-agent"}},[t._v("#")]),t._v(" builders.domain.agent")]),t._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),i("skdecide-summary")],1),t._v(" "),i("h2",{attrs:{id:"multiagent"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#multiagent"}},[t._v("#")]),t._v(" MultiAgent")]),t._v(" "),i("p",[t._v("A domain must inherit this class if it is multi-agent (i.e hosting multiple independent agents).")]),t._v(" "),i("p",[t._v("Agents are identified by (string) agent names.")]),t._v(" "),i("h2",{attrs:{id:"singleagent"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#singleagent"}},[t._v("#")]),t._v(" SingleAgent")]),t._v(" "),i("p",[t._v("A domain must inherit this class if it is single-agent (i.e hosting only one agent).")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{534:function(t,e,i){"use strict";i.r(e);var s=i(38),a=Object(s.a)({},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[i("h1",{attrs:{id:"builders-domain-agent"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-agent"}},[t._v("#")]),t._v(" builders.domain.agent")]),t._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),i("skdecide-summary")],1),t._v(" "),i("h2",{attrs:{id:"multiagent"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#multiagent"}},[t._v("#")]),t._v(" MultiAgent")]),t._v(" "),i("p",[t._v("A domain must inherit this class if it is multi-agent (i.e hosting multiple independent agents).")]),t._v(" "),i("p",[t._v("Agents are identified by (string) agent names.")]),t._v(" "),i("h2",{attrs:{id:"singleagent"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#singleagent"}},[t._v("#")]),t._v(" SingleAgent")]),t._v(" "),i("p",[t._v("A domain must inherit this class if it is single-agent (i.e hosting only one agent).")])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/24.33c8a7be.js b/assets/js/24.873c1d53.js similarity index 94% rename from assets/js/24.33c8a7be.js rename to assets/js/24.873c1d53.js index 5b849ed425..1b55641c64 100644 --- a/assets/js/24.33c8a7be.js +++ b/assets/js/24.873c1d53.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{534:function(t,a,s){"use strict";s.r(a);var e=s(38),i=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-concurrency"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-concurrency"}},[t._v("#")]),t._v(" builders.domain.concurrency")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),s("skdecide-summary")],1),t._v(" "),s("h2",{attrs:{id:"parallel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parallel"}},[t._v("#")]),t._v(" Parallel")]),t._v(" "),s("p",[t._v("A domain must inherit this class if multiple events/actions can happen in parallel.")]),t._v(" "),s("h2",{attrs:{id:"sequential"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sequential"}},[t._v("#")]),t._v(" Sequential")]),t._v(" "),s("p",[t._v("A domain must inherit this class if its events/actions are sequential (non-parallel).")])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{535:function(t,a,s){"use strict";s.r(a);var e=s(38),i=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-concurrency"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-concurrency"}},[t._v("#")]),t._v(" builders.domain.concurrency")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),s("skdecide-summary")],1),t._v(" "),s("h2",{attrs:{id:"parallel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#parallel"}},[t._v("#")]),t._v(" Parallel")]),t._v(" "),s("p",[t._v("A domain must inherit this class if multiple events/actions can happen in parallel.")]),t._v(" "),s("h2",{attrs:{id:"sequential"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#sequential"}},[t._v("#")]),t._v(" Sequential")]),t._v(" "),s("p",[t._v("A domain must inherit this class if its events/actions are sequential (non-parallel).")])])}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/25.a29dba80.js b/assets/js/25.6d2c9156.js similarity index 98% rename from assets/js/25.a29dba80.js rename to assets/js/25.6d2c9156.js index 9ed2716a7e..fe7f978c93 100644 --- a/assets/js/25.a29dba80.js +++ b/assets/js/25.6d2c9156.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{535:function(t,s,e){"use strict";e.r(s);var a=e(38),n=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"builders-domain-constraints"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-constraints"}},[t._v("#")]),t._v(" builders.domain.constraints")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"constrained"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#constrained"}},[t._v("#")]),t._v(" Constrained")]),t._v(" "),e("p",[t._v("A domain must inherit this class if it has constraints.")]),t._v(" "),e("h3",{attrs:{id:"get-constraints"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-constraints"}},[t._v("#")]),t._v(" get_constraints "),e("Badge",{attrs:{text:"Constrained",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_constraints",sig:{params:[{name:"self"}],return:"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) domain constraints.")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("Constrained.get_constraints()")]),t._v(" internally calls "),e("code",[t._v("Constrained._get_constraints_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the list of constraints is assumed to\nbe constant).")]),t._v(" "),e("h4",{attrs:{id:"returns"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The list of constraints.")]),t._v(" "),e("h3",{attrs:{id:"get-constraints-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-constraints-2"}},[t._v("#")]),t._v(" _get_constraints "),e("Badge",{attrs:{text:"Constrained",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_constraints",sig:{params:[{name:"self"}],return:"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) domain constraints.")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("Constrained._get_constraints()")]),t._v(" internally calls "),e("code",[t._v("Constrained._get_constraints_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the list of constraints is assumed to\nbe constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The list of constraints.")]),t._v(" "),e("h3",{attrs:{id:"get-constraints-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-constraints-3"}},[t._v("#")]),t._v(" _get_constraints_ "),e("Badge",{attrs:{text:"Constrained",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_constraints_",sig:{params:[{name:"self"}],return:"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"}}}),t._v(" "),e("p",[t._v("Get the domain constraints.")]),t._v(" "),e("p",[t._v("This is a helper function called by default from "),e("code",[t._v("Constrained.get_constraints()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),e("h4",{attrs:{id:"returns-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The list of constraints.")])],1)}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{536:function(t,s,e){"use strict";e.r(s);var a=e(38),n=Object(a.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"builders-domain-constraints"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-constraints"}},[t._v("#")]),t._v(" builders.domain.constraints")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"constrained"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#constrained"}},[t._v("#")]),t._v(" Constrained")]),t._v(" "),e("p",[t._v("A domain must inherit this class if it has constraints.")]),t._v(" "),e("h3",{attrs:{id:"get-constraints"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-constraints"}},[t._v("#")]),t._v(" get_constraints "),e("Badge",{attrs:{text:"Constrained",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_constraints",sig:{params:[{name:"self"}],return:"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) domain constraints.")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("Constrained.get_constraints()")]),t._v(" internally calls "),e("code",[t._v("Constrained._get_constraints_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the list of constraints is assumed to\nbe constant).")]),t._v(" "),e("h4",{attrs:{id:"returns"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The list of constraints.")]),t._v(" "),e("h3",{attrs:{id:"get-constraints-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-constraints-2"}},[t._v("#")]),t._v(" _get_constraints "),e("Badge",{attrs:{text:"Constrained",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_constraints",sig:{params:[{name:"self"}],return:"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) domain constraints.")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("Constrained._get_constraints()")]),t._v(" internally calls "),e("code",[t._v("Constrained._get_constraints_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the list of constraints is assumed to\nbe constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The list of constraints.")]),t._v(" "),e("h3",{attrs:{id:"get-constraints-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-constraints-3"}},[t._v("#")]),t._v(" _get_constraints_ "),e("Badge",{attrs:{text:"Constrained",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_constraints_",sig:{params:[{name:"self"}],return:"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"}}}),t._v(" "),e("p",[t._v("Get the domain constraints.")]),t._v(" "),e("p",[t._v("This is a helper function called by default from "),e("code",[t._v("Constrained.get_constraints()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),e("h4",{attrs:{id:"returns-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The list of constraints.")])],1)}),[],!1,null,null,null);s.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/26.b3309d0b.js b/assets/js/26.dd5dc9b5.js similarity index 99% rename from assets/js/26.b3309d0b.js rename to assets/js/26.dd5dc9b5.js index e35b1ef038..c7f1acd873 100644 --- a/assets/js/26.b3309d0b.js +++ b/assets/js/26.dd5dc9b5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{536:function(t,e,a){"use strict";a.r(e);var n=a(38),s=Object(n.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-dynamics"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-dynamics"}},[t._v("#")]),t._v(" builders.domain.dynamics")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"environment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment"}},[t._v("#")]),t._v(" Environment")]),t._v(" "),a("p",[t._v("A domain must inherit this class if agents interact with it like a black-box environment.")]),t._v(" "),a("p",[t._v("Black-box environment examples include: the real world, compiled ATARI games, etc.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Environment domains are typically stateful: they must keep the current state or history in their memory to\ncompute next steps (automatically done by default in the "),a("code",[t._v("_memory")]),t._v(" attribute).")])]),t._v(" "),a("h3",{attrs:{id:"step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"state-step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#simulation"}},[t._v("#")]),t._v(" Simulation")]),t._v(" "),a("p",[t._v("A domain must inherit this class if agents interact with it like a simulation.")]),t._v(" "),a("p",[t._v("Compared to pure environment domains, simulation ones have the additional ability to sample transitions from any\ngiven state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Simulation domains are typically stateless: they do not need to store the current state or history in memory\nsince it is usually passed as parameter of their functions. By default, they only become stateful whenever they\nare used as environments (e.g. via "),a("code",[t._v("Initializable.reset()")]),t._v(" and "),a("code",[t._v("Environment.step()")]),t._v(" functions).")])]),t._v(" "),a("h3",{attrs:{id:"sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-2"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-2"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"uncertaintransitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uncertaintransitions"}},[t._v("#")]),t._v(" UncertainTransitions")]),t._v(" "),a("p",[t._v("A domain must inherit this class if its dynamics is uncertain and provided as a white-box model.")]),t._v(" "),a("p",[t._v("Compared to pure simulation domains, uncertain transition ones provide in addition the full probability distribution\nof next states given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Uncertain transition domains are typically stateless: they do not need to store the current state or history in\nmemory since it is usually passed as parameter of their functions. By default, they only become stateful\nwhenever they are used as environments (e.g. via "),a("code",[t._v("Initializable.reset()")]),t._v(" and "),a("code",[t._v("Environment.step()")]),t._v(" functions).")])]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-3"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-2"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-2"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-2"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-2"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-3"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-4"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-2"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-3"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-6"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"enumerabletransitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enumerabletransitions"}},[t._v("#")]),t._v(" EnumerableTransitions")]),t._v(" "),a("p",[t._v("A domain must inherit this class if its dynamics is uncertain (with enumerable transitions) and provided as a\nwhite-box model.")]),t._v(" "),a("p",[t._v("Compared to pure uncertain transition domains, enumerable transition ones guarantee that all probability\ndistributions of next state are discrete.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Enumerable transition domains are typically stateless: they do not need to store the current state or history in\nmemory since it is usually passed as parameter of their functions. By default, they only become stateful\nwhenever they are used as environments (e.g. via "),a("code",[t._v("Initializable.reset()")]),t._v(" and "),a("code",[t._v("Environment.step()")]),t._v(" functions).")])]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-3"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-3"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-3"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-4"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-5"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-5"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"step-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-7"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-4"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-4"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-4"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-5"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-6"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-6"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-6"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-3"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-4"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-8"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"deterministictransitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministictransitions"}},[t._v("#")]),t._v(" DeterministicTransitions")]),t._v(" "),a("p",[t._v("A domain must inherit this class if its dynamics is deterministic and provided as a white-box model.")]),t._v(" "),a("p",[t._v("Compared to pure enumerable transition domains, deterministic transition ones guarantee that there is only one next\nstate for a given source memory (state or history) and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Deterministic transition domains are typically stateless: they do not need to store the current state or history\nin memory since it is usually passed as parameter of their functions. By default, they only become stateful\nwhenever they are used as environments (e.g. via "),a("code",[t._v("Initializable.reset()")]),t._v(" and "),a("code",[t._v("Environment.step()")]),t._v(" functions).")])]),t._v(" "),a("h3",{attrs:{id:"get-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-5"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-5"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-5"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-7"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-7"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-7"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"step-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-9"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-2"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-6"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"SingleValueDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-6"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-6"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-8"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-9"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-52"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-8"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-53"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-8"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-4"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-53"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-54"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-5"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-54"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-55"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-10"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-55"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-56"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{537:function(t,e,a){"use strict";a.r(e);var n=a(38),s=Object(n.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-dynamics"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-dynamics"}},[t._v("#")]),t._v(" builders.domain.dynamics")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"environment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment"}},[t._v("#")]),t._v(" Environment")]),t._v(" "),a("p",[t._v("A domain must inherit this class if agents interact with it like a black-box environment.")]),t._v(" "),a("p",[t._v("Black-box environment examples include: the real world, compiled ATARI games, etc.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Environment domains are typically stateful: they must keep the current state or history in their memory to\ncompute next steps (automatically done by default in the "),a("code",[t._v("_memory")]),t._v(" attribute).")])]),t._v(" "),a("h3",{attrs:{id:"step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"state-step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#simulation"}},[t._v("#")]),t._v(" Simulation")]),t._v(" "),a("p",[t._v("A domain must inherit this class if agents interact with it like a simulation.")]),t._v(" "),a("p",[t._v("Compared to pure environment domains, simulation ones have the additional ability to sample transitions from any\ngiven state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Simulation domains are typically stateless: they do not need to store the current state or history in memory\nsince it is usually passed as parameter of their functions. By default, they only become stateful whenever they\nare used as environments (e.g. via "),a("code",[t._v("Initializable.reset()")]),t._v(" and "),a("code",[t._v("Environment.step()")]),t._v(" functions).")])]),t._v(" "),a("h3",{attrs:{id:"sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-2"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-2"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"uncertaintransitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uncertaintransitions"}},[t._v("#")]),t._v(" UncertainTransitions")]),t._v(" "),a("p",[t._v("A domain must inherit this class if its dynamics is uncertain and provided as a white-box model.")]),t._v(" "),a("p",[t._v("Compared to pure simulation domains, uncertain transition ones provide in addition the full probability distribution\nof next states given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Uncertain transition domains are typically stateless: they do not need to store the current state or history in\nmemory since it is usually passed as parameter of their functions. By default, they only become stateful\nwhenever they are used as environments (e.g. via "),a("code",[t._v("Initializable.reset()")]),t._v(" and "),a("code",[t._v("Environment.step()")]),t._v(" functions).")])]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-3"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-2"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-2"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-2"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-2"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-3"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-4"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-2"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-3"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-6"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"enumerabletransitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enumerabletransitions"}},[t._v("#")]),t._v(" EnumerableTransitions")]),t._v(" "),a("p",[t._v("A domain must inherit this class if its dynamics is uncertain (with enumerable transitions) and provided as a\nwhite-box model.")]),t._v(" "),a("p",[t._v("Compared to pure uncertain transition domains, enumerable transition ones guarantee that all probability\ndistributions of next state are discrete.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Enumerable transition domains are typically stateless: they do not need to store the current state or history in\nmemory since it is usually passed as parameter of their functions. By default, they only become stateful\nwhenever they are used as environments (e.g. via "),a("code",[t._v("Initializable.reset()")]),t._v(" and "),a("code",[t._v("Environment.step()")]),t._v(" functions).")])]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-3"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-3"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-3"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-4"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-5"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-5"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"step-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-7"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-4"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-4"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-4"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-5"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-6"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-6"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-6"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-3"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-4"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-8"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"deterministictransitions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministictransitions"}},[t._v("#")]),t._v(" DeterministicTransitions")]),t._v(" "),a("p",[t._v("A domain must inherit this class if its dynamics is deterministic and provided as a white-box model.")]),t._v(" "),a("p",[t._v("Compared to pure enumerable transition domains, deterministic transition ones guarantee that there is only one next\nstate for a given source memory (state or history) and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Deterministic transition domains are typically stateless: they do not need to store the current state or history\nin memory since it is usually passed as parameter of their functions. By default, they only become stateful\nwhenever they are used as environments (e.g. via "),a("code",[t._v("Initializable.reset()")]),t._v(" and "),a("code",[t._v("Environment.step()")]),t._v(" functions).")])]),t._v(" "),a("h3",{attrs:{id:"get-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-5"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-5"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-5"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-7"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-7"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-7"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"step-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-9"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-2"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-6"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"SingleValueDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-6"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-6"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-8"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-9"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-52"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-8"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-53"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-8"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-4"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-53"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-54"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-5"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-54"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-55"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-10"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-55"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-56"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/27.46dcca47.js b/assets/js/27.8769ca36.js similarity index 99% rename from assets/js/27.46dcca47.js rename to assets/js/27.8769ca36.js index 906521607e..b50904bd12 100644 --- a/assets/js/27.46dcca47.js +++ b/assets/js/27.8769ca36.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{537:function(e,t,a){"use strict";a.r(t);var s=a(38),n=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-events"}},[e._v("#")]),e._v(" builders.domain.events")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#events"}},[e._v("#")]),e._v(" Events")]),e._v(" "),a("p",[e._v("A domain must inherit this class if it handles events (controllable or not not by the agents).")]),e._v(" "),a("h3",{attrs:{id:"get-action-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space"}},[e._v("#")]),e._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions"}},[e._v("#")]),e._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events"}},[e._v("#")]),e._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action"}},[e._v("#")]),e._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events.get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action"}},[e._v("#")]),e._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event"}},[e._v("#")]),e._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-2"}},[e._v("#")]),e._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-3"}},[e._v("#")]),e._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_action_space()")]),e._v(", the difference being that the\nresult is not cached here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),e._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-2"}},[e._v("#")]),e._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from"}},[e._v("#")]),e._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(", the difference being that\nthe memory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-2"}},[e._v("#")]),e._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from"}},[e._v("#")]),e._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_enabled_events()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-2"}},[e._v("#")]),e._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events._get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-2"}},[e._v("#")]),e._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from"}},[e._v("#")]),e._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_applicable_action()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\napplicable actions provided by "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-2"}},[e._v("#")]),e._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from"}},[e._v("#")]),e._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is enabled in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_enabled_event()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\nenabled events provided by "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h2",{attrs:{id:"actions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#actions"}},[e._v("#")]),e._v(" Actions")]),e._v(" "),a("p",[e._v("A domain must inherit this class if it handles only actions (i.e. controllable events).")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-4"}},[e._v("#")]),e._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-3"}},[e._v("#")]),e._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-3"}},[e._v("#")]),e._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-3"}},[e._v("#")]),e._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events.get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-3"}},[e._v("#")]),e._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-3"}},[e._v("#")]),e._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-5"}},[e._v("#")]),e._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-6"}},[e._v("#")]),e._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_action_space()")]),e._v(", the difference being that the\nresult is not cached here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),e._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-4"}},[e._v("#")]),e._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-2"}},[e._v("#")]),e._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(", the difference being that\nthe memory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-4"}},[e._v("#")]),e._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-2"}},[e._v("#")]),e._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_enabled_events()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-4"}},[e._v("#")]),e._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events._get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-4"}},[e._v("#")]),e._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-2"}},[e._v("#")]),e._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_applicable_action()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\napplicable actions provided by "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-4"}},[e._v("#")]),e._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-2"}},[e._v("#")]),e._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is enabled in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_enabled_event()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\nenabled events provided by "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h2",{attrs:{id:"unrestrictedactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unrestrictedactions"}},[e._v("#")]),e._v(" UnrestrictedActions")]),e._v(" "),a("p",[e._v("A domain must inherit this class if it handles only actions (i.e. controllable events), which are always all\napplicable.")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-7"}},[e._v("#")]),e._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-5"}},[e._v("#")]),e._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-5"}},[e._v("#")]),e._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-5"}},[e._v("#")]),e._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events.get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-5"}},[e._v("#")]),e._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-5"}},[e._v("#")]),e._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-8"}},[e._v("#")]),e._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-9"}},[e._v("#")]),e._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_action_space()")]),e._v(", the difference being that the\nresult is not cached here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),e._v(" "),a("h4",{attrs:{id:"returns-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-6"}},[e._v("#")]),e._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-3"}},[e._v("#")]),e._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(", the difference being that\nthe memory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-6"}},[e._v("#")]),e._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-3"}},[e._v("#")]),e._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_enabled_events()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-6"}},[e._v("#")]),e._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events._get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-6"}},[e._v("#")]),e._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-3"}},[e._v("#")]),e._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_applicable_action()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\napplicable actions provided by "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-6"}},[e._v("#")]),e._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-3"}},[e._v("#")]),e._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is enabled in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_enabled_event()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\nenabled events provided by "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{538:function(e,t,a){"use strict";a.r(t);var s=a(38),n=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-events"}},[e._v("#")]),e._v(" builders.domain.events")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#events"}},[e._v("#")]),e._v(" Events")]),e._v(" "),a("p",[e._v("A domain must inherit this class if it handles events (controllable or not not by the agents).")]),e._v(" "),a("h3",{attrs:{id:"get-action-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space"}},[e._v("#")]),e._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions"}},[e._v("#")]),e._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events"}},[e._v("#")]),e._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action"}},[e._v("#")]),e._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events.get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action"}},[e._v("#")]),e._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event"}},[e._v("#")]),e._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-2"}},[e._v("#")]),e._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-3"}},[e._v("#")]),e._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_action_space()")]),e._v(", the difference being that the\nresult is not cached here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),e._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-2"}},[e._v("#")]),e._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from"}},[e._v("#")]),e._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(", the difference being that\nthe memory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-2"}},[e._v("#")]),e._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from"}},[e._v("#")]),e._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_enabled_events()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-2"}},[e._v("#")]),e._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events._get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-2"}},[e._v("#")]),e._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from"}},[e._v("#")]),e._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_applicable_action()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\napplicable actions provided by "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-2"}},[e._v("#")]),e._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from"}},[e._v("#")]),e._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is enabled in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_enabled_event()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\nenabled events provided by "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h2",{attrs:{id:"actions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#actions"}},[e._v("#")]),e._v(" Actions")]),e._v(" "),a("p",[e._v("A domain must inherit this class if it handles only actions (i.e. controllable events).")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-4"}},[e._v("#")]),e._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-3"}},[e._v("#")]),e._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-3"}},[e._v("#")]),e._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-3"}},[e._v("#")]),e._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events.get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-3"}},[e._v("#")]),e._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-3"}},[e._v("#")]),e._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-5"}},[e._v("#")]),e._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-6"}},[e._v("#")]),e._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_action_space()")]),e._v(", the difference being that the\nresult is not cached here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),e._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-4"}},[e._v("#")]),e._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-2"}},[e._v("#")]),e._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(", the difference being that\nthe memory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-4"}},[e._v("#")]),e._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-2"}},[e._v("#")]),e._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_enabled_events()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-4"}},[e._v("#")]),e._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events._get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-4"}},[e._v("#")]),e._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-2"}},[e._v("#")]),e._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_applicable_action()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\napplicable actions provided by "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-4"}},[e._v("#")]),e._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-2"}},[e._v("#")]),e._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is enabled in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_enabled_event()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\nenabled events provided by "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h2",{attrs:{id:"unrestrictedactions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unrestrictedactions"}},[e._v("#")]),e._v(" UnrestrictedActions")]),e._v(" "),a("p",[e._v("A domain must inherit this class if it handles only actions (i.e. controllable events), which are always all\napplicable.")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-7"}},[e._v("#")]),e._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-5"}},[e._v("#")]),e._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-5"}},[e._v("#")]),e._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-5"}},[e._v("#")]),e._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events.get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-5"}},[e._v("#")]),e._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-5"}},[e._v("#")]),e._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events.is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-8"}},[e._v("#")]),e._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the (cached) domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_action_space()")]),e._v(" internally calls "),a("code",[e._v("Events._get_action_space_()")]),e._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),e._v(" "),a("h4",{attrs:{id:"returns-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-action-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-9"}},[e._v("#")]),e._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the domain action space (finite or infinite set).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_action_space()")]),e._v(", the difference being that the\nresult is not cached here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),e._v(" "),a("h4",{attrs:{id:"returns-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The action space.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-6"}},[e._v("#")]),e._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-3"}},[e._v("#")]),e._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_applicable_actions()")]),e._v(", the difference being that\nthe memory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of applicable actions.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-6"}},[e._v("#")]),e._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._get_enabled_events()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-3"}},[e._v("#")]),e._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),e._v(" "),a("p",[e._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._get_enabled_events()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("The space of enabled events.")]),e._v(" "),a("h3",{attrs:{id:"is-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-6"}},[e._v("#")]),e._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the domain\naction space provided by "),a("code",[e._v("Events._get_action_space()")]),e._v(", but it can be overridden for faster implementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("event")]),e._v(": The event to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is an action (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-6"}},[e._v("#")]),e._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_applicable_action()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_applicable_action_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-3"}},[e._v("#")]),e._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an action is applicable in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_applicable_action()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\napplicable actions provided by "),a("code",[e._v("Events._get_applicable_actions_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the action is applicable (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-6"}},[e._v("#")]),e._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),e._v(" "),a("p",[e._v("By default, "),a("code",[e._v("Events._is_enabled_event()")]),e._v(" provides some boilerplate code and internally\ncalls "),a("code",[e._v("Events._is_enabled_event_from()")]),e._v(". The boilerplate code automatically passes the "),a("code",[e._v("_memory")]),e._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),e._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),a("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),a("h4",{attrs:{id:"returns-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")]),e._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-3"}},[e._v("#")]),e._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Indicate whether an event is enabled in the given memory (state or history).")]),e._v(" "),a("p",[e._v("This is a helper function called by default from "),a("code",[e._v("Events._is_enabled_event()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("By default, this function is implemented using the "),a("code",[e._v("skdecide.core.Space.contains()")]),e._v(" function on the space of\nenabled events provided by "),a("code",[e._v("Events._get_enabled_events_from()")]),e._v(", but it can be overridden for faster\nimplementations.")])]),e._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),a("h4",{attrs:{id:"returns-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),a("p",[e._v("True if the event is enabled (False otherwise).")])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/28.ad9d4fa2.js b/assets/js/28.85f6a5d4.js similarity index 99% rename from assets/js/28.ad9d4fa2.js rename to assets/js/28.85f6a5d4.js index c5513f9cf5..6b1c93fe9c 100644 --- a/assets/js/28.ad9d4fa2.js +++ b/assets/js/28.85f6a5d4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{538:function(t,e,a){"use strict";a.r(e);var s=a(38),o=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-goals"}},[t._v("#")]),t._v(" builders.domain.goals")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#goals"}},[t._v("#")]),t._v(" Goals")]),t._v(" "),a("p",[t._v("A domain must inherit this class if it has formalized goals.")]),t._v(" "),a("h3",{attrs:{id:"get-goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"is-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-goals-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-2"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-3"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"is-goal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-2"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")])],1)}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{539:function(t,e,a){"use strict";a.r(e);var s=a(38),o=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-goals"}},[t._v("#")]),t._v(" builders.domain.goals")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#goals"}},[t._v("#")]),t._v(" Goals")]),t._v(" "),a("p",[t._v("A domain must inherit this class if it has formalized goals.")]),t._v(" "),a("h3",{attrs:{id:"get-goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"is-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-goals-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-2"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-3"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"is-goal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-2"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")])],1)}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/29.99d0c510.js b/assets/js/29.a0ec034c.js similarity index 99% rename from assets/js/29.99d0c510.js rename to assets/js/29.a0ec034c.js index bea05c66a1..c6bda999fb 100644 --- a/assets/js/29.99d0c510.js +++ b/assets/js/29.a0ec034c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{539:function(t,e,i){"use strict";i.r(e);var a=i(38),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[i("h1",{attrs:{id:"builders-domain-initialization"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-initialization"}},[t._v("#")]),t._v(" builders.domain.initialization")]),t._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),i("skdecide-summary")],1),t._v(" "),i("h2",{attrs:{id:"initializable"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#initializable"}},[t._v("#")]),t._v(" Initializable")]),t._v(" "),i("p",[t._v("A domain must inherit this class if it can be initialized.")]),t._v(" "),i("h3",{attrs:{id:"reset"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[t._v("#")]),t._v(" reset "),i("Badge",{attrs:{text:"Initializable",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),i("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),i("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"reset-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[t._v("#")]),t._v(" _reset "),i("Badge",{attrs:{text:"Initializable",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),i("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),i("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"state-reset"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#state-reset"}},[t._v("#")]),t._v(" _state_reset "),i("Badge",{attrs:{text:"Initializable",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),i("h4",{attrs:{id:"returns-3"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial state.")]),t._v(" "),i("h2",{attrs:{id:"uncertaininitialized"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#uncertaininitialized"}},[t._v("#")]),t._v(" UncertainInitialized")]),t._v(" "),i("p",[t._v("A domain must inherit this class if its states are initialized according to a probability distribution known as\nwhite-box.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution"}},[t._v("#")]),t._v(" get_initial_state_distribution "),i("Badge",{attrs:{text:"UncertainInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-4"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"reset-3"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset-3"}},[t._v("#")]),t._v(" reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),i("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),i("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns-5"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-2"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),i("Badge",{attrs:{text:"UncertainInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-6"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution-3"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-3"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),i("Badge",{attrs:{text:"UncertainInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),i("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),i("h4",{attrs:{id:"returns-7"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"reset-4"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset-4"}},[t._v("#")]),t._v(" _reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),i("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),i("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns-8"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"state-reset-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-2"}},[t._v("#")]),t._v(" _state_reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),i("h4",{attrs:{id:"returns-9"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial state.")]),t._v(" "),i("h2",{attrs:{id:"deterministicinitialized"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#deterministicinitialized"}},[t._v("#")]),t._v(" DeterministicInitialized")]),t._v(" "),i("p",[t._v("A domain must inherit this class if it has a deterministic initial state known as white-box.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state"}},[t._v("#")]),t._v(" get_initial_state "),i("Badge",{attrs:{text:"DeterministicInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Get the (cached) initial state.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),i("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-10"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The initial state.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution-4"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-4"}},[t._v("#")]),t._v(" get_initial_state_distribution "),i("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-11"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"reset-5"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset-5"}},[t._v("#")]),t._v(" reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),i("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),i("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns-12"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-2"}},[t._v("#")]),t._v(" _get_initial_state "),i("Badge",{attrs:{text:"DeterministicInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Get the (cached) initial state.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),i("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-13"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The initial state.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-3"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-3"}},[t._v("#")]),t._v(" _get_initial_state_ "),i("Badge",{attrs:{text:"DeterministicInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Get the initial state.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),i("h4",{attrs:{id:"returns-14"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The initial state.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution-5"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-5"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),i("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-15"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution-6"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-6"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),i("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),i("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),i("h4",{attrs:{id:"returns-16"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"reset-6"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset-6"}},[t._v("#")]),t._v(" _reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),i("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),i("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns-17"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"state-reset-3"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-3"}},[t._v("#")]),t._v(" _state_reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),i("h4",{attrs:{id:"returns-18"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial state.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{540:function(t,e,i){"use strict";i.r(e);var a=i(38),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[i("h1",{attrs:{id:"builders-domain-initialization"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-initialization"}},[t._v("#")]),t._v(" builders.domain.initialization")]),t._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),i("skdecide-summary")],1),t._v(" "),i("h2",{attrs:{id:"initializable"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#initializable"}},[t._v("#")]),t._v(" Initializable")]),t._v(" "),i("p",[t._v("A domain must inherit this class if it can be initialized.")]),t._v(" "),i("h3",{attrs:{id:"reset"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[t._v("#")]),t._v(" reset "),i("Badge",{attrs:{text:"Initializable",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),i("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),i("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"reset-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[t._v("#")]),t._v(" _reset "),i("Badge",{attrs:{text:"Initializable",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),i("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),i("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"state-reset"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#state-reset"}},[t._v("#")]),t._v(" _state_reset "),i("Badge",{attrs:{text:"Initializable",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),i("h4",{attrs:{id:"returns-3"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial state.")]),t._v(" "),i("h2",{attrs:{id:"uncertaininitialized"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#uncertaininitialized"}},[t._v("#")]),t._v(" UncertainInitialized")]),t._v(" "),i("p",[t._v("A domain must inherit this class if its states are initialized according to a probability distribution known as\nwhite-box.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution"}},[t._v("#")]),t._v(" get_initial_state_distribution "),i("Badge",{attrs:{text:"UncertainInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-4"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"reset-3"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset-3"}},[t._v("#")]),t._v(" reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),i("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),i("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns-5"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-2"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),i("Badge",{attrs:{text:"UncertainInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-6"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution-3"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-3"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),i("Badge",{attrs:{text:"UncertainInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),i("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),i("h4",{attrs:{id:"returns-7"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"reset-4"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset-4"}},[t._v("#")]),t._v(" _reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),i("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),i("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns-8"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"state-reset-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-2"}},[t._v("#")]),t._v(" _state_reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),i("h4",{attrs:{id:"returns-9"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial state.")]),t._v(" "),i("h2",{attrs:{id:"deterministicinitialized"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#deterministicinitialized"}},[t._v("#")]),t._v(" DeterministicInitialized")]),t._v(" "),i("p",[t._v("A domain must inherit this class if it has a deterministic initial state known as white-box.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state"}},[t._v("#")]),t._v(" get_initial_state "),i("Badge",{attrs:{text:"DeterministicInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Get the (cached) initial state.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),i("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-10"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The initial state.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution-4"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-4"}},[t._v("#")]),t._v(" get_initial_state_distribution "),i("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-11"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"reset-5"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset-5"}},[t._v("#")]),t._v(" reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),i("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),i("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns-12"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-2"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-2"}},[t._v("#")]),t._v(" _get_initial_state "),i("Badge",{attrs:{text:"DeterministicInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Get the (cached) initial state.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),i("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-13"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The initial state.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-3"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-3"}},[t._v("#")]),t._v(" _get_initial_state_ "),i("Badge",{attrs:{text:"DeterministicInitialized",type:"tip"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Get the initial state.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),i("h4",{attrs:{id:"returns-14"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The initial state.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution-5"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-5"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),i("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),i("h4",{attrs:{id:"returns-15"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"get-initial-state-distribution-6"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-6"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),i("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),i("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),i("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),i("h4",{attrs:{id:"returns-16"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("The probability distribution of initial states.")]),t._v(" "),i("h3",{attrs:{id:"reset-6"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#reset-6"}},[t._v("#")]),t._v(" _reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),i("p",[t._v("By default, "),i("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),i("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),i("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),i("h4",{attrs:{id:"returns-17"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial observation.")]),t._v(" "),i("h3",{attrs:{id:"state-reset-3"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-3"}},[t._v("#")]),t._v(" _state_reset "),i("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),i("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),i("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),i("p",[t._v("This is a helper function called by default from "),i("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),i("h4",{attrs:{id:"returns-18"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),i("p",[t._v("An initial state.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/30.cf49d4dc.js b/assets/js/30.040f976b.js similarity index 99% rename from assets/js/30.cf49d4dc.js rename to assets/js/30.040f976b.js index 55cdda094f..ceec78b523 100644 --- a/assets/js/30.cf49d4dc.js +++ b/assets/js/30.040f976b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{540:function(t,e,a){"use strict";a.r(e);var s=a(38),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-memory"}},[t._v("#")]),t._v(" builders.domain.memory")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history"}},[t._v("#")]),t._v(" History")]),t._v(" "),a("p",[t._v("A domain must inherit this class if its full state history must be stored to compute its dynamics (non-Markovian\ndomain).")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"Optional[int]"}}}),t._v(" "),a("p",[t._v("Get the memory max length (or None if unbounded).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always None by default because the memory length is unbounded at this level.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length (or None if unbounded).")]),t._v(" "),a("h3",{attrs:{id:"init-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h2",{attrs:{id:"finitehistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#finitehistory"}},[t._v("#")]),t._v(" FiniteHistory")]),t._v(" "),a("p",[t._v("A domain must inherit this class if the last N states must be stored to compute its dynamics (Markovian\ndomain of order N).")]),t._v(" "),a("p",[t._v("N is specified by the return value of the "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" function.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-2"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-3"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-2"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h2",{attrs:{id:"markovian"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#markovian"}},[t._v("#")]),t._v(" Markovian")]),t._v(" "),a("p",[t._v("A domain must inherit this class if only its last state must be stored to compute its dynamics (pure Markovian\ndomain).")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-4"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-5"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-3"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h2",{attrs:{id:"memoryless"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#memoryless"}},[t._v("#")]),t._v(" Memoryless")]),t._v(" "),a("p",[t._v("A domain must inherit this class if it does not require any previous state(s) to be stored to compute its\ndynamics.")]),t._v(" "),a("p",[t._v("A dice roll simulator is an example of memoryless domain (next states are independent of previous ones).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing domain (environment, simulator...) needs to be wrapped instead of implemented fully in\nscikit-decide (e.g. compiled ATARI games), Memoryless can be used because the domain memory (if any) would\nbe handled externally.")])]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-6"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-7"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-4"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{541:function(t,e,a){"use strict";a.r(e);var s=a(38),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-memory"}},[t._v("#")]),t._v(" builders.domain.memory")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"history"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#history"}},[t._v("#")]),t._v(" History")]),t._v(" "),a("p",[t._v("A domain must inherit this class if its full state history must be stored to compute its dynamics (non-Markovian\ndomain).")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"Optional[int]"}}}),t._v(" "),a("p",[t._v("Get the memory max length (or None if unbounded).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always None by default because the memory length is unbounded at this level.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length (or None if unbounded).")]),t._v(" "),a("h3",{attrs:{id:"init-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h2",{attrs:{id:"finitehistory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#finitehistory"}},[t._v("#")]),t._v(" FiniteHistory")]),t._v(" "),a("p",[t._v("A domain must inherit this class if the last N states must be stored to compute its dynamics (Markovian\ndomain of order N).")]),t._v(" "),a("p",[t._v("N is specified by the return value of the "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" function.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-2"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-3"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-2"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h2",{attrs:{id:"markovian"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#markovian"}},[t._v("#")]),t._v(" Markovian")]),t._v(" "),a("p",[t._v("A domain must inherit this class if only its last state must be stored to compute its dynamics (pure Markovian\ndomain).")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-4"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-5"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-3"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h2",{attrs:{id:"memoryless"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#memoryless"}},[t._v("#")]),t._v(" Memoryless")]),t._v(" "),a("p",[t._v("A domain must inherit this class if it does not require any previous state(s) to be stored to compute its\ndynamics.")]),t._v(" "),a("p",[t._v("A dice roll simulator is an example of memoryless domain (next states are independent of previous ones).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing domain (environment, simulator...) needs to be wrapped instead of implemented fully in\nscikit-decide (e.g. compiled ATARI games), Memoryless can be used because the domain memory (if any) would\nbe handled externally.")])]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-6"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-7"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-4"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/31.cb0bb539.js b/assets/js/31.7ce3a643.js similarity index 99% rename from assets/js/31.cb0bb539.js rename to assets/js/31.7ce3a643.js index dfd6b055b7..dfe8e776ae 100644 --- a/assets/js/31.cb0bb539.js +++ b/assets/js/31.7ce3a643.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{541:function(t,a,e){"use strict";e.r(a);var s=e(38),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"builders-domain-observability"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-observability"}},[t._v("#")]),t._v(" builders.domain.observability")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"partiallyobservable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#partiallyobservable"}},[t._v("#")]),t._v(" PartiallyObservable")]),t._v(" "),e("p",[t._v("A domain must inherit this class if it is partially observable.")]),t._v(" "),e("p",[t._v('"Partially observable" means that the observation provided to the agent is computed from (but generally not equal\nto) the internal state of the domain. Additionally, according to literature, a partially observable domain must\nprovide the probability distribution of the observation given a state and action.')]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution"}},[t._v("#")]),t._v(" get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space"}},[t._v("#")]),t._v(" get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation"}},[t._v("#")]),t._v(" is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-2"}},[t._v("#")]),t._v(" _get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-2"}},[t._v("#")]),t._v(" _get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-3"}},[t._v("#")]),t._v(" _get_observation_space_ "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("This is a helper function called by default from "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),e("h4",{attrs:{id:"returns-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-2"}},[t._v("#")]),t._v(" _is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),e("h2",{attrs:{id:"transformedobservable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#transformedobservable"}},[t._v("#")]),t._v(" TransformedObservable")]),t._v(" "),e("p",[t._v("A domain must inherit this class if it is transformed observable.")]),t._v(" "),e("p",[t._v('"Transformed observable" means that the observation provided to the agent is deterministically computed from (but\ngenerally not equal to) the internal state of the domain.')]),t._v(" "),e("h3",{attrs:{id:"get-observation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation"}},[t._v("#")]),t._v(" get_observation "),e("Badge",{attrs:{text:"TransformedObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),e("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),e("h4",{attrs:{id:"parameters-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-3"}},[t._v("#")]),t._v(" get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-4"}},[t._v("#")]),t._v(" get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-3"}},[t._v("#")]),t._v(" is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),e("h3",{attrs:{id:"get-observation-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-2"}},[t._v("#")]),t._v(" _get_observation "),e("Badge",{attrs:{text:"TransformedObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),e("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),e("h4",{attrs:{id:"parameters-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-4"}},[t._v("#")]),t._v(" _get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-5"}},[t._v("#")]),t._v(" _get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-6"}},[t._v("#")]),t._v(" _get_observation_space_ "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("This is a helper function called by default from "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),e("h4",{attrs:{id:"returns-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-4"}},[t._v("#")]),t._v(" _is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),e("h2",{attrs:{id:"fullyobservable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fullyobservable"}},[t._v("#")]),t._v(" FullyObservable")]),t._v(" "),e("p",[t._v("A domain must inherit this class if it is fully observable.")]),t._v(" "),e("p",[t._v('"Fully observable" means that the observation provided to the agent is equal to the internal state of the domain.')]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("In the case of fully observable domains, make sure that the observation type D.T_observation is equal to the\nstate type D.T_state.")])]),t._v(" "),e("h3",{attrs:{id:"get-observation-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-3"}},[t._v("#")]),t._v(" get_observation "),e("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),e("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),e("h4",{attrs:{id:"parameters-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-5"}},[t._v("#")]),t._v(" get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-7"}},[t._v("#")]),t._v(" get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-5"}},[t._v("#")]),t._v(" is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),e("h3",{attrs:{id:"get-observation-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-4"}},[t._v("#")]),t._v(" _get_observation "),e("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),e("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),e("h4",{attrs:{id:"parameters-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-6"}},[t._v("#")]),t._v(" _get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-8"}},[t._v("#")]),t._v(" _get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-9"}},[t._v("#")]),t._v(" _get_observation_space_ "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("This is a helper function called by default from "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),e("h4",{attrs:{id:"returns-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-6"}},[t._v("#")]),t._v(" _is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{542:function(t,a,e){"use strict";e.r(a);var s=e(38),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"builders-domain-observability"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-observability"}},[t._v("#")]),t._v(" builders.domain.observability")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"partiallyobservable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#partiallyobservable"}},[t._v("#")]),t._v(" PartiallyObservable")]),t._v(" "),e("p",[t._v("A domain must inherit this class if it is partially observable.")]),t._v(" "),e("p",[t._v('"Partially observable" means that the observation provided to the agent is computed from (but generally not equal\nto) the internal state of the domain. Additionally, according to literature, a partially observable domain must\nprovide the probability distribution of the observation given a state and action.')]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution"}},[t._v("#")]),t._v(" get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space"}},[t._v("#")]),t._v(" get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation"}},[t._v("#")]),t._v(" is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-2"}},[t._v("#")]),t._v(" _get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-2"}},[t._v("#")]),t._v(" _get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-3"}},[t._v("#")]),t._v(" _get_observation_space_ "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("This is a helper function called by default from "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),e("h4",{attrs:{id:"returns-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-2"}},[t._v("#")]),t._v(" _is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),e("h2",{attrs:{id:"transformedobservable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#transformedobservable"}},[t._v("#")]),t._v(" TransformedObservable")]),t._v(" "),e("p",[t._v("A domain must inherit this class if it is transformed observable.")]),t._v(" "),e("p",[t._v('"Transformed observable" means that the observation provided to the agent is deterministically computed from (but\ngenerally not equal to) the internal state of the domain.')]),t._v(" "),e("h3",{attrs:{id:"get-observation"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation"}},[t._v("#")]),t._v(" get_observation "),e("Badge",{attrs:{text:"TransformedObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),e("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),e("h4",{attrs:{id:"parameters-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-3"}},[t._v("#")]),t._v(" get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-4"}},[t._v("#")]),t._v(" get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-3"}},[t._v("#")]),t._v(" is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),e("h3",{attrs:{id:"get-observation-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-2"}},[t._v("#")]),t._v(" _get_observation "),e("Badge",{attrs:{text:"TransformedObservable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),e("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),e("h4",{attrs:{id:"parameters-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-4"}},[t._v("#")]),t._v(" _get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-5"}},[t._v("#")]),t._v(" _get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-6"}},[t._v("#")]),t._v(" _get_observation_space_ "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("This is a helper function called by default from "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),e("h4",{attrs:{id:"returns-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-4"}},[t._v("#")]),t._v(" _is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-10"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),e("h2",{attrs:{id:"fullyobservable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#fullyobservable"}},[t._v("#")]),t._v(" FullyObservable")]),t._v(" "),e("p",[t._v("A domain must inherit this class if it is fully observable.")]),t._v(" "),e("p",[t._v('"Fully observable" means that the observation provided to the agent is equal to the internal state of the domain.')]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("In the case of fully observable domains, make sure that the observation type D.T_observation is equal to the\nstate type D.T_state.")])]),t._v(" "),e("h3",{attrs:{id:"get-observation-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-3"}},[t._v("#")]),t._v(" get_observation "),e("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),e("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),e("h4",{attrs:{id:"parameters-11"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-17"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-5"}},[t._v("#")]),t._v(" get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters-12"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-18"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-7"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-7"}},[t._v("#")]),t._v(" get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-19"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-5"}},[t._v("#")]),t._v(" is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-13"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-20"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),e("h3",{attrs:{id:"get-observation-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-4"}},[t._v("#")]),t._v(" _get_observation "),e("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),e("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),e("h4",{attrs:{id:"parameters-14"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-21"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-distribution-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-6"}},[t._v("#")]),t._v(" _get_observation_distribution "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),e("p",[t._v("In mathematical terms (discrete case), given an action "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[e("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[e("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[e("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[e("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),e("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[e("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),e("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[e("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),e("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[e("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[e("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[e("g",{attrs:{"data-mml-node":"math"}},[e("g",{attrs:{"data-mml-node":"mi"}},[e("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),e("h4",{attrs:{id:"parameters-15"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),e("li",[e("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),e("h4",{attrs:{id:"returns-22"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The probability distribution of the observation.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-8"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-8"}},[t._v("#")]),t._v(" _get_observation_space "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("By default, "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),e("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),e("h4",{attrs:{id:"returns-23"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"get-observation-space-9"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-9"}},[t._v("#")]),t._v(" _get_observation_space_ "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),e("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),e("p",[t._v("This is a helper function called by default from "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),e("h4",{attrs:{id:"returns-24"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("The observation space.")]),t._v(" "),e("h3",{attrs:{id:"is-observation-6"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-6"}},[t._v("#")]),t._v(" _is_observation "),e("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),e("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("By default, this function is implemented using the "),e("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),e("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),e("h4",{attrs:{id:"parameters-16"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),e("h4",{attrs:{id:"returns-25"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),e("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/32.1df5e81f.js b/assets/js/32.b09a0704.js similarity index 98% rename from assets/js/32.1df5e81f.js rename to assets/js/32.b09a0704.js index 433aa249ca..a999449c73 100644 --- a/assets/js/32.1df5e81f.js +++ b/assets/js/32.b09a0704.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{542:function(e,r,t){"use strict";t.r(r);var a=t(38),n=Object(a.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"builders-domain-renderability"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-renderability"}},[e._v("#")]),e._v(" builders.domain.renderability")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),t("skdecide-summary")],1),e._v(" "),t("h2",{attrs:{id:"renderable"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#renderable"}},[e._v("#")]),e._v(" Renderable")]),e._v(" "),t("p",[e._v("A domain must inherit this class if it can be rendered with any kind of visualization.")]),e._v(" "),t("h3",{attrs:{id:"render"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#render"}},[e._v("#")]),e._v(" render "),t("Badge",{attrs:{text:"Renderable",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),e._v(" "),t("p",[e._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),e._v(" "),t("p",[e._v("By default, "),t("code",[e._v("Renderable.render()")]),e._v(" provides some boilerplate code and internally calls "),t("code",[e._v("Renderable._render()")]),e._v(". The\nboilerplate code automatically passes the "),t("code",[e._v("_memory")]),e._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),e._v(" "),t("h4",{attrs:{id:"parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),t("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),t("h4",{attrs:{id:"returns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),t("p",[e._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),e._v(" "),t("h3",{attrs:{id:"render-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#render-2"}},[e._v("#")]),e._v(" _render "),t("Badge",{attrs:{text:"Renderable",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),e._v(" "),t("p",[e._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),e._v(" "),t("p",[e._v("By default, "),t("code",[e._v("Renderable._render()")]),e._v(" provides some boilerplate code and internally\ncalls "),t("code",[e._v("Renderable._render_from()")]),e._v(". The boilerplate code automatically passes the "),t("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),t("h4",{attrs:{id:"parameters-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),t("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),t("h4",{attrs:{id:"returns-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),t("p",[e._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),e._v(" "),t("h3",{attrs:{id:"render-from"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#render-from"}},[e._v("#")]),e._v(" _render_from "),t("Badge",{attrs:{text:"Renderable",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),e._v(" "),t("p",[e._v("Compute a visual render of the given memory (state or history).")]),e._v(" "),t("p",[e._v("This is a helper function called by default from "),t("code",[e._v("Renderable._render()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),t("h4",{attrs:{id:"parameters-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),t("h4",{attrs:{id:"returns-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),t("p",[e._v("A render (e.g. image) or nothing (if the function handles the display directly).")])],1)}),[],!1,null,null,null);r.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{543:function(e,r,t){"use strict";t.r(r);var a=t(38),n=Object(a.a)({},(function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"builders-domain-renderability"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-renderability"}},[e._v("#")]),e._v(" builders.domain.renderability")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),t("skdecide-summary")],1),e._v(" "),t("h2",{attrs:{id:"renderable"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#renderable"}},[e._v("#")]),e._v(" Renderable")]),e._v(" "),t("p",[e._v("A domain must inherit this class if it can be rendered with any kind of visualization.")]),e._v(" "),t("h3",{attrs:{id:"render"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#render"}},[e._v("#")]),e._v(" render "),t("Badge",{attrs:{text:"Renderable",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),e._v(" "),t("p",[e._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),e._v(" "),t("p",[e._v("By default, "),t("code",[e._v("Renderable.render()")]),e._v(" provides some boilerplate code and internally calls "),t("code",[e._v("Renderable._render()")]),e._v(". The\nboilerplate code automatically passes the "),t("code",[e._v("_memory")]),e._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),e._v(" "),t("h4",{attrs:{id:"parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),t("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),t("h4",{attrs:{id:"returns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),t("p",[e._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),e._v(" "),t("h3",{attrs:{id:"render-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#render-2"}},[e._v("#")]),e._v(" _render "),t("Badge",{attrs:{text:"Renderable",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),e._v(" "),t("p",[e._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),e._v(" "),t("p",[e._v("By default, "),t("code",[e._v("Renderable._render()")]),e._v(" provides some boilerplate code and internally\ncalls "),t("code",[e._v("Renderable._render_from()")]),e._v(". The boilerplate code automatically passes the "),t("code",[e._v("_memory")]),e._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),e._v(" "),t("h4",{attrs:{id:"parameters-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("memory")]),e._v(": The memory to consider (if None, the internal memory attribute "),t("code",[e._v("_memory")]),e._v(" is used instead).")])]),e._v(" "),t("h4",{attrs:{id:"returns-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),t("p",[e._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),e._v(" "),t("h3",{attrs:{id:"render-from"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#render-from"}},[e._v("#")]),e._v(" _render_from "),t("Badge",{attrs:{text:"Renderable",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),e._v(" "),t("p",[e._v("Compute a visual render of the given memory (state or history).")]),e._v(" "),t("p",[e._v("This is a helper function called by default from "),t("code",[e._v("Renderable._render()")]),e._v(", the difference being that the\nmemory parameter is mandatory here.")]),e._v(" "),t("h4",{attrs:{id:"parameters-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("memory")]),e._v(": The memory to consider.")])]),e._v(" "),t("h4",{attrs:{id:"returns-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[e._v("#")]),e._v(" Returns")]),e._v(" "),t("p",[e._v("A render (e.g. image) or nothing (if the function handles the display directly).")])],1)}),[],!1,null,null,null);r.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/33.21043598.js b/assets/js/33.b7efa69d.js similarity index 99% rename from assets/js/33.21043598.js rename to assets/js/33.b7efa69d.js index d54181038b..b849c96a6d 100644 --- a/assets/js/33.21043598.js +++ b/assets/js/33.b7efa69d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{543:function(t,e,a){"use strict";a.r(e);var n=a(38),i=Object(n.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-conditional-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-conditional-tasks"}},[t._v("#")]),t._v(" builders.domain.scheduling.conditional_tasks")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"withconditionaltasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withconditionaltasks"}},[t._v("#")]),t._v(" WithConditionalTasks")]),t._v(" "),a("p",[t._v("A domain must inherit this class if some tasks only need be executed under some conditions\nand that the condition model can be expressed with Distribution objects.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions"}},[t._v("#")]),t._v(" add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"get-all-condition-items"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-condition-items"}},[t._v("#")]),t._v(" get_all_condition_items "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_condition_items",sig:{params:[{name:"self"}],return:"Enum"}}}),t._v(" "),a("p",[t._v("Return an Enum with all the elements that can be used to define a condition.")]),t._v(" "),a("p",[t._v("Example:\nreturn\nConditionElementsExample(Enum):\nOK = 0\nNC_PART_1_OPERATION_1 = 1\nNC_PART_1_OPERATION_2 = 2\nNC_PART_2_OPERATION_1 = 3\nNC_PART_2_OPERATION_2 = 4\nHARDWARE_ISSUE_MACHINE_A = 5\nHARDWARE_ISSUE_MACHINE_B = 6")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks"}},[t._v("#")]),t._v(" get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks"}},[t._v("#")]),t._v(" get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions"}},[t._v("#")]),t._v(" get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-on-completion-added-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-on-completion-added-conditions"}},[t._v("#")]),t._v(" get_task_on_completion_added_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_on_completion_added_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[Distribution]]"}}}),t._v(" "),a("p",[t._v("Return a dict of list. The key of the dict is the task id and each list is composed of a list of tuples.\nEach tuple contains the probability (first item in tuple) that the conditionElement (second item in tuple)\nis True. The probabilities in the inner list should sum up to 1. The dictionary should only contains the keys\nof tasks that can create conditions.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n12:\n[\nDiscreteDistribution([(ConditionElementsExample.NC_PART_1_OPERATION_1, 0.1), (ConditionElementsExample.OK, 0.9)]),\nDiscreteDistribution([(ConditionElementsExample.HARDWARE_ISSUE_MACHINE_A, 0.05), ('paper', 0.1), (ConditionElementsExample.OK, 0.95)])\n]\n}")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions"}},[t._v("#")]),t._v(" sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-2"}},[t._v("#")]),t._v(" _add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-2"}},[t._v("#")]),t._v(" _get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-2"}},[t._v("#")]),t._v(" _get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-2"}},[t._v("#")]),t._v(" _get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-2"}},[t._v("#")]),t._v(" _sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h2",{attrs:{id:"withoutconditionaltasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withoutconditionaltasks"}},[t._v("#")]),t._v(" WithoutConditionalTasks")]),t._v(" "),a("p",[t._v("A domain must inherit this class if all tasks need be executed without conditions.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-3"}},[t._v("#")]),t._v(" add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"get-all-condition-items-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-condition-items-2"}},[t._v("#")]),t._v(" get_all_condition_items "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_condition_items",sig:{params:[{name:"self"}],return:"Enum"}}}),t._v(" "),a("p",[t._v("Return an Enum with all the elements that can be used to define a condition.")]),t._v(" "),a("p",[t._v("Example:\nreturn\nConditionElementsExample(Enum):\nOK = 0\nNC_PART_1_OPERATION_1 = 1\nNC_PART_1_OPERATION_2 = 2\nNC_PART_2_OPERATION_1 = 3\nNC_PART_2_OPERATION_2 = 4\nHARDWARE_ISSUE_MACHINE_A = 5\nHARDWARE_ISSUE_MACHINE_B = 6")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-3"}},[t._v("#")]),t._v(" get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-3"}},[t._v("#")]),t._v(" get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-3"}},[t._v("#")]),t._v(" get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-on-completion-added-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-on-completion-added-conditions-2"}},[t._v("#")]),t._v(" get_task_on_completion_added_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_on_completion_added_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[Distribution]]"}}}),t._v(" "),a("p",[t._v("Return a dict of list. The key of the dict is the task id and each list is composed of a list of tuples.\nEach tuple contains the probability (first item in tuple) that the conditionElement (second item in tuple)\nis True. The probabilities in the inner list should sum up to 1. The dictionary should only contains the keys\nof tasks that can create conditions.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n12:\n[\nDiscreteDistribution([(ConditionElementsExample.NC_PART_1_OPERATION_1, 0.1), (ConditionElementsExample.OK, 0.9)]),\nDiscreteDistribution([(ConditionElementsExample.HARDWARE_ISSUE_MACHINE_A, 0.05), ('paper', 0.1), (ConditionElementsExample.OK, 0.95)])\n]\n}")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-3"}},[t._v("#")]),t._v(" sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-4"}},[t._v("#")]),t._v(" _add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-4"}},[t._v("#")]),t._v(" _get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-4"}},[t._v("#")]),t._v(" _get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-4"}},[t._v("#")]),t._v(" _get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-4"}},[t._v("#")]),t._v(" _sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")])],1)}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{544:function(t,e,a){"use strict";a.r(e);var n=a(38),i=Object(n.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-conditional-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-conditional-tasks"}},[t._v("#")]),t._v(" builders.domain.scheduling.conditional_tasks")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"withconditionaltasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withconditionaltasks"}},[t._v("#")]),t._v(" WithConditionalTasks")]),t._v(" "),a("p",[t._v("A domain must inherit this class if some tasks only need be executed under some conditions\nand that the condition model can be expressed with Distribution objects.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions"}},[t._v("#")]),t._v(" add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"get-all-condition-items"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-condition-items"}},[t._v("#")]),t._v(" get_all_condition_items "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_condition_items",sig:{params:[{name:"self"}],return:"Enum"}}}),t._v(" "),a("p",[t._v("Return an Enum with all the elements that can be used to define a condition.")]),t._v(" "),a("p",[t._v("Example:\nreturn\nConditionElementsExample(Enum):\nOK = 0\nNC_PART_1_OPERATION_1 = 1\nNC_PART_1_OPERATION_2 = 2\nNC_PART_2_OPERATION_1 = 3\nNC_PART_2_OPERATION_2 = 4\nHARDWARE_ISSUE_MACHINE_A = 5\nHARDWARE_ISSUE_MACHINE_B = 6")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks"}},[t._v("#")]),t._v(" get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks"}},[t._v("#")]),t._v(" get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions"}},[t._v("#")]),t._v(" get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-on-completion-added-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-on-completion-added-conditions"}},[t._v("#")]),t._v(" get_task_on_completion_added_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_on_completion_added_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[Distribution]]"}}}),t._v(" "),a("p",[t._v("Return a dict of list. The key of the dict is the task id and each list is composed of a list of tuples.\nEach tuple contains the probability (first item in tuple) that the conditionElement (second item in tuple)\nis True. The probabilities in the inner list should sum up to 1. The dictionary should only contains the keys\nof tasks that can create conditions.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n12:\n[\nDiscreteDistribution([(ConditionElementsExample.NC_PART_1_OPERATION_1, 0.1), (ConditionElementsExample.OK, 0.9)]),\nDiscreteDistribution([(ConditionElementsExample.HARDWARE_ISSUE_MACHINE_A, 0.05), ('paper', 0.1), (ConditionElementsExample.OK, 0.95)])\n]\n}")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions"}},[t._v("#")]),t._v(" sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-2"}},[t._v("#")]),t._v(" _add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-2"}},[t._v("#")]),t._v(" _get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-2"}},[t._v("#")]),t._v(" _get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-2"}},[t._v("#")]),t._v(" _get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-2"}},[t._v("#")]),t._v(" _sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h2",{attrs:{id:"withoutconditionaltasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withoutconditionaltasks"}},[t._v("#")]),t._v(" WithoutConditionalTasks")]),t._v(" "),a("p",[t._v("A domain must inherit this class if all tasks need be executed without conditions.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-3"}},[t._v("#")]),t._v(" add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"get-all-condition-items-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-condition-items-2"}},[t._v("#")]),t._v(" get_all_condition_items "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_condition_items",sig:{params:[{name:"self"}],return:"Enum"}}}),t._v(" "),a("p",[t._v("Return an Enum with all the elements that can be used to define a condition.")]),t._v(" "),a("p",[t._v("Example:\nreturn\nConditionElementsExample(Enum):\nOK = 0\nNC_PART_1_OPERATION_1 = 1\nNC_PART_1_OPERATION_2 = 2\nNC_PART_2_OPERATION_1 = 3\nNC_PART_2_OPERATION_2 = 4\nHARDWARE_ISSUE_MACHINE_A = 5\nHARDWARE_ISSUE_MACHINE_B = 6")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-3"}},[t._v("#")]),t._v(" get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-3"}},[t._v("#")]),t._v(" get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-3"}},[t._v("#")]),t._v(" get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-on-completion-added-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-on-completion-added-conditions-2"}},[t._v("#")]),t._v(" get_task_on_completion_added_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_on_completion_added_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[Distribution]]"}}}),t._v(" "),a("p",[t._v("Return a dict of list. The key of the dict is the task id and each list is composed of a list of tuples.\nEach tuple contains the probability (first item in tuple) that the conditionElement (second item in tuple)\nis True. The probabilities in the inner list should sum up to 1. The dictionary should only contains the keys\nof tasks that can create conditions.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n12:\n[\nDiscreteDistribution([(ConditionElementsExample.NC_PART_1_OPERATION_1, 0.1), (ConditionElementsExample.OK, 0.9)]),\nDiscreteDistribution([(ConditionElementsExample.HARDWARE_ISSUE_MACHINE_A, 0.05), ('paper', 0.1), (ConditionElementsExample.OK, 0.95)])\n]\n}")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-3"}},[t._v("#")]),t._v(" sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-4"}},[t._v("#")]),t._v(" _add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-4"}},[t._v("#")]),t._v(" _get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-4"}},[t._v("#")]),t._v(" _get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-4"}},[t._v("#")]),t._v(" _get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-4"}},[t._v("#")]),t._v(" _sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")])],1)}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/34.52c334fa.js b/assets/js/34.baaf1ed0.js similarity index 90% rename from assets/js/34.52c334fa.js rename to assets/js/34.baaf1ed0.js index 2cee9a7c40..623b03b323 100644 --- a/assets/js/34.52c334fa.js +++ b/assets/js/34.baaf1ed0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{544:function(t,s,i){"use strict";i.r(s);var o=i(38),a=Object(o.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-graph-toolbox"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-graph-toolbox"}},[this._v("#")]),this._v(" builders.domain.scheduling.graph_toolbox")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{545:function(t,s,i){"use strict";i.r(s);var o=i(38),a=Object(o.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-graph-toolbox"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-graph-toolbox"}},[this._v("#")]),this._v(" builders.domain.scheduling.graph_toolbox")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/35.2e6418dd.js b/assets/js/35.3ceebbae.js similarity index 99% rename from assets/js/35.2e6418dd.js rename to assets/js/35.3ceebbae.js index ac55d96132..7c65de3cb4 100644 --- a/assets/js/35.2e6418dd.js +++ b/assets/js/35.3ceebbae.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{545:function(t,e,s){"use strict";s.r(e);var n=s(38),a=Object(n.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-modes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-modes"}},[t._v("#")]),t._v(" builders.domain.scheduling.modes")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),s("skdecide-summary")],1),t._v(" "),s("h2",{attrs:{id:"varyingmodeconsumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#varyingmodeconsumption"}},[t._v("#")]),t._v(" VaryingModeConsumption")]),t._v(" "),s("p",[t._v("Defines the most generic type of mode.")]),t._v(" "),s("h3",{attrs:{id:"constructor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),s("Badge",{attrs:{text:"VaryingModeConsumption",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"VaryingModeConsumption",sig:{params:[{name:"mode_dict",annotation:"Dict[str, List[int]]"}]}}}),t._v(" "),s("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need-at-time"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need-at-time"}},[t._v("#")]),t._v(" get_resource_need_at_time "),s("Badge",{attrs:{text:"ModeConsumption",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_need_at_time",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"},{name:"time",annotation:"int"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource at the given time.\nNote that the time should be the time from the start of the execution of the task (starting from 0).")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need-at-time-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need-at-time-2"}},[t._v("#")]),t._v(" _get_resource_need_at_time "),s("Badge",{attrs:{text:"ModeConsumption",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_need_at_time",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"},{name:"time",annotation:"int"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource at the given time.\nNote that the time should be the time from the start of the execution of the task (starting from 0).")]),t._v(" "),s("h2",{attrs:{id:"constantmodeconsumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#constantmodeconsumption"}},[t._v("#")]),t._v(" ConstantModeConsumption")]),t._v(" "),s("p",[t._v("Defines a mode where the resource consumption is constant throughout\nthe duration of the task.")]),t._v(" "),s("h3",{attrs:{id:"constructor-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),s("Badge",{attrs:{text:"ConstantModeConsumption",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"ConstantModeConsumption",sig:{params:[{name:"mode_dict",annotation:"Dict[str, int]"}]}}}),t._v(" "),s("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need"}},[t._v("#")]),t._v(" get_resource_need "),s("Badge",{attrs:{text:"ConstantModeConsumption",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_need",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need-at-time-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need-at-time-3"}},[t._v("#")]),t._v(" get_resource_need_at_time "),s("Badge",{attrs:{text:"ModeConsumption",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_need_at_time",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"},{name:"time",annotation:"int"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource at the given time.\nNote that the time should be the time from the start of the execution of the task (starting from 0).")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need-2"}},[t._v("#")]),t._v(" _get_resource_need "),s("Badge",{attrs:{text:"ConstantModeConsumption",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_need",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need-at-time-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need-at-time-4"}},[t._v("#")]),t._v(" _get_resource_need_at_time "),s("Badge",{attrs:{text:"ModeConsumption",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_need_at_time",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"},{name:"time",annotation:"int"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource at the given time.\nNote that the time should be the time from the start of the execution of the task (starting from 0).")]),t._v(" "),s("h2",{attrs:{id:"multimode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#multimode"}},[t._v("#")]),t._v(" MultiMode")]),t._v(" "),s("p",[t._v("A domain must inherit this class if tasks can be done in 1 or more modes.")]),t._v(" "),s("h3",{attrs:{id:"get-tasks-ids"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-ids"}},[t._v("#")]),t._v(" _get_tasks_ids "),s("Badge",{attrs:{text:"MultiMode",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_tasks_ids",sig:{params:[{name:"self"}],return:"Union[Set[int], Dict[int, Any], List[int]]"}}}),t._v(" "),s("p",[t._v("Return a set or dict of int = id of tasks")]),t._v(" "),s("h3",{attrs:{id:"get-tasks-modes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-modes"}},[t._v("#")]),t._v(" _get_tasks_modes "),s("Badge",{attrs:{text:"MultiMode",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_tasks_modes",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, ModeConsumption]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is a task id and the second key is a mode id.\nThe value is a Mode object defining the resource consumption.\nIf the domain is an instance of VariableResourceConsumption, VaryingModeConsumption objects should be used.\nIf this is not the case (i.e. the domain is an instance of ConstantResourceConsumption),\nthen ConstantModeConsumption should be used.")]),t._v(" "),s("p",[t._v("E.g. with constant resource consumption\n{\n12: {\n1: ConstantModeConsumption({'rt_1': 2, 'rt_2': 0, 'ru_1': 1}),\n2: ConstantModeConsumption({'rt_1': 0, 'rt_2': 3, 'ru_1': 1}),\n}\n}")]),t._v(" "),s("p",[t._v("E.g. with time varying resource consumption\n{\n12: {\n1: VaryingModeConsumption({'rt_1': [2,2,2,2,3], 'rt_2': [0,0,0,0,0], 'ru_1': [1,1,1,1,1]}),\n2: VaryingModeConsumption({'rt_1': [1,1,1,1,2,2,2], 'rt_2': [0,0,0,0,0,0,0], 'ru_1': [1,1,1,1,1,1,1]}),\n}\n}")]),t._v(" "),s("h2",{attrs:{id:"singlemode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#singlemode"}},[t._v("#")]),t._v(" SingleMode")]),t._v(" "),s("p",[t._v("A domain must inherit this class if ALL tasks only have 1 possible execution mode.")]),t._v(" "),s("h3",{attrs:{id:"get-tasks-ids-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-ids-2"}},[t._v("#")]),t._v(" _get_tasks_ids "),s("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_tasks_ids",sig:{params:[{name:"self"}],return:"Union[Set[int], Dict[int, Any], List[int]]"}}}),t._v(" "),s("p",[t._v("Return a set or dict of int = id of tasks")]),t._v(" "),s("h3",{attrs:{id:"get-tasks-mode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-mode"}},[t._v("#")]),t._v(" _get_tasks_mode "),s("Badge",{attrs:{text:"SingleMode",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_tasks_mode",sig:{params:[{name:"self"}],return:"Dict[int, ModeConsumption]"}}}),t._v(" "),s("p",[t._v("Return a dictionary where the key is a task id and the value is a ModeConsumption object defining\nthe resource consumption.\nIf the domain is an instance of VariableResourceConsumption, VaryingModeConsumption objects should be used.\nIf this is not the case (i.e. the domain is an instance of ConstantResourceConsumption),\nthen ConstantModeConsumption should be used.")]),t._v(" "),s("p",[t._v("E.g. with constant resource consumption\n{\n12: ConstantModeConsumption({'rt_1': 2, 'rt_2': 0, 'ru_1': 1})\n}")]),t._v(" "),s("p",[t._v("E.g. with time varying resource consumption\n{\n12: VaryingModeConsumption({'rt_1': [2,2,2,2,3], 'rt_2': [0,0,0,0,0], 'ru_1': [1,1,1,1,1]})\n}")]),t._v(" "),s("h3",{attrs:{id:"get-tasks-modes-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-modes-2"}},[t._v("#")]),t._v(" _get_tasks_modes "),s("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_tasks_modes",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, ModeConsumption]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is a task id and the second key is a mode id.\nThe value is a Mode object defining the resource consumption.")])],1)}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{546:function(t,e,s){"use strict";s.r(e);var n=s(38),a=Object(n.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-modes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-modes"}},[t._v("#")]),t._v(" builders.domain.scheduling.modes")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),s("skdecide-summary")],1),t._v(" "),s("h2",{attrs:{id:"varyingmodeconsumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#varyingmodeconsumption"}},[t._v("#")]),t._v(" VaryingModeConsumption")]),t._v(" "),s("p",[t._v("Defines the most generic type of mode.")]),t._v(" "),s("h3",{attrs:{id:"constructor"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),s("Badge",{attrs:{text:"VaryingModeConsumption",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"VaryingModeConsumption",sig:{params:[{name:"mode_dict",annotation:"Dict[str, List[int]]"}]}}}),t._v(" "),s("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need-at-time"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need-at-time"}},[t._v("#")]),t._v(" get_resource_need_at_time "),s("Badge",{attrs:{text:"ModeConsumption",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_need_at_time",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"},{name:"time",annotation:"int"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource at the given time.\nNote that the time should be the time from the start of the execution of the task (starting from 0).")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need-at-time-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need-at-time-2"}},[t._v("#")]),t._v(" _get_resource_need_at_time "),s("Badge",{attrs:{text:"ModeConsumption",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_need_at_time",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"},{name:"time",annotation:"int"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource at the given time.\nNote that the time should be the time from the start of the execution of the task (starting from 0).")]),t._v(" "),s("h2",{attrs:{id:"constantmodeconsumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#constantmodeconsumption"}},[t._v("#")]),t._v(" ConstantModeConsumption")]),t._v(" "),s("p",[t._v("Defines a mode where the resource consumption is constant throughout\nthe duration of the task.")]),t._v(" "),s("h3",{attrs:{id:"constructor-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),s("Badge",{attrs:{text:"ConstantModeConsumption",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"ConstantModeConsumption",sig:{params:[{name:"mode_dict",annotation:"Dict[str, int]"}]}}}),t._v(" "),s("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need"}},[t._v("#")]),t._v(" get_resource_need "),s("Badge",{attrs:{text:"ConstantModeConsumption",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_need",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need-at-time-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need-at-time-3"}},[t._v("#")]),t._v(" get_resource_need_at_time "),s("Badge",{attrs:{text:"ModeConsumption",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_need_at_time",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"},{name:"time",annotation:"int"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource at the given time.\nNote that the time should be the time from the start of the execution of the task (starting from 0).")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need-2"}},[t._v("#")]),t._v(" _get_resource_need "),s("Badge",{attrs:{text:"ConstantModeConsumption",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_need",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-need-at-time-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-need-at-time-4"}},[t._v("#")]),t._v(" _get_resource_need_at_time "),s("Badge",{attrs:{text:"ModeConsumption",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_need_at_time",sig:{params:[{name:"self"},{name:"resource_name",annotation:"str"},{name:"time",annotation:"int"}]}}}),t._v(" "),s("p",[t._v("Return the resource consumption for the given resource at the given time.\nNote that the time should be the time from the start of the execution of the task (starting from 0).")]),t._v(" "),s("h2",{attrs:{id:"multimode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#multimode"}},[t._v("#")]),t._v(" MultiMode")]),t._v(" "),s("p",[t._v("A domain must inherit this class if tasks can be done in 1 or more modes.")]),t._v(" "),s("h3",{attrs:{id:"get-tasks-ids"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-ids"}},[t._v("#")]),t._v(" _get_tasks_ids "),s("Badge",{attrs:{text:"MultiMode",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_tasks_ids",sig:{params:[{name:"self"}],return:"Union[Set[int], Dict[int, Any], List[int]]"}}}),t._v(" "),s("p",[t._v("Return a set or dict of int = id of tasks")]),t._v(" "),s("h3",{attrs:{id:"get-tasks-modes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-modes"}},[t._v("#")]),t._v(" _get_tasks_modes "),s("Badge",{attrs:{text:"MultiMode",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_tasks_modes",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, ModeConsumption]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is a task id and the second key is a mode id.\nThe value is a Mode object defining the resource consumption.\nIf the domain is an instance of VariableResourceConsumption, VaryingModeConsumption objects should be used.\nIf this is not the case (i.e. the domain is an instance of ConstantResourceConsumption),\nthen ConstantModeConsumption should be used.")]),t._v(" "),s("p",[t._v("E.g. with constant resource consumption\n{\n12: {\n1: ConstantModeConsumption({'rt_1': 2, 'rt_2': 0, 'ru_1': 1}),\n2: ConstantModeConsumption({'rt_1': 0, 'rt_2': 3, 'ru_1': 1}),\n}\n}")]),t._v(" "),s("p",[t._v("E.g. with time varying resource consumption\n{\n12: {\n1: VaryingModeConsumption({'rt_1': [2,2,2,2,3], 'rt_2': [0,0,0,0,0], 'ru_1': [1,1,1,1,1]}),\n2: VaryingModeConsumption({'rt_1': [1,1,1,1,2,2,2], 'rt_2': [0,0,0,0,0,0,0], 'ru_1': [1,1,1,1,1,1,1]}),\n}\n}")]),t._v(" "),s("h2",{attrs:{id:"singlemode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#singlemode"}},[t._v("#")]),t._v(" SingleMode")]),t._v(" "),s("p",[t._v("A domain must inherit this class if ALL tasks only have 1 possible execution mode.")]),t._v(" "),s("h3",{attrs:{id:"get-tasks-ids-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-ids-2"}},[t._v("#")]),t._v(" _get_tasks_ids "),s("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_tasks_ids",sig:{params:[{name:"self"}],return:"Union[Set[int], Dict[int, Any], List[int]]"}}}),t._v(" "),s("p",[t._v("Return a set or dict of int = id of tasks")]),t._v(" "),s("h3",{attrs:{id:"get-tasks-mode"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-mode"}},[t._v("#")]),t._v(" _get_tasks_mode "),s("Badge",{attrs:{text:"SingleMode",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_tasks_mode",sig:{params:[{name:"self"}],return:"Dict[int, ModeConsumption]"}}}),t._v(" "),s("p",[t._v("Return a dictionary where the key is a task id and the value is a ModeConsumption object defining\nthe resource consumption.\nIf the domain is an instance of VariableResourceConsumption, VaryingModeConsumption objects should be used.\nIf this is not the case (i.e. the domain is an instance of ConstantResourceConsumption),\nthen ConstantModeConsumption should be used.")]),t._v(" "),s("p",[t._v("E.g. with constant resource consumption\n{\n12: ConstantModeConsumption({'rt_1': 2, 'rt_2': 0, 'ru_1': 1})\n}")]),t._v(" "),s("p",[t._v("E.g. with time varying resource consumption\n{\n12: VaryingModeConsumption({'rt_1': [2,2,2,2,3], 'rt_2': [0,0,0,0,0], 'ru_1': [1,1,1,1,1]})\n}")]),t._v(" "),s("h3",{attrs:{id:"get-tasks-modes-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-modes-2"}},[t._v("#")]),t._v(" _get_tasks_modes "),s("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_tasks_modes",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, ModeConsumption]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is a task id and the second key is a mode id.\nThe value is a Mode object defining the resource consumption.")])],1)}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/36.c6c4b6aa.js b/assets/js/36.d6aec86c.js similarity index 98% rename from assets/js/36.c6c4b6aa.js rename to assets/js/36.d6aec86c.js index bd2d946387..d0ecda6233 100644 --- a/assets/js/36.c6c4b6aa.js +++ b/assets/js/36.d6aec86c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{546:function(t,a,e){"use strict";e.r(a);var s=e(38),i=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"builders-domain-scheduling-preallocations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-preallocations"}},[t._v("#")]),t._v(" builders.domain.scheduling.preallocations")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"withpreallocations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#withpreallocations"}},[t._v("#")]),t._v(" WithPreallocations")]),t._v(" "),e("p",[t._v("A domain must inherit this class if there are some pre-allocations to consider.")]),t._v(" "),e("h3",{attrs:{id:"get-preallocations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations"}},[t._v("#")]),t._v(" get_preallocations "),e("Badge",{attrs:{text:"WithPreallocations",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),e("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),e("h3",{attrs:{id:"get-preallocations-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-2"}},[t._v("#")]),t._v(" _get_preallocations "),e("Badge",{attrs:{text:"WithPreallocations",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),e("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),e("h2",{attrs:{id:"withoutpreallocations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#withoutpreallocations"}},[t._v("#")]),t._v(" WithoutPreallocations")]),t._v(" "),e("p",[t._v("A domain must inherit this class if there are no pre-allocations to consider.")]),t._v(" "),e("h3",{attrs:{id:"get-preallocations-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-3"}},[t._v("#")]),t._v(" get_preallocations "),e("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),e("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),e("h3",{attrs:{id:"get-preallocations-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-4"}},[t._v("#")]),t._v(" _get_preallocations "),e("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),e("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")])],1)}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{547:function(t,a,e){"use strict";e.r(a);var s=e(38),i=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"builders-domain-scheduling-preallocations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-preallocations"}},[t._v("#")]),t._v(" builders.domain.scheduling.preallocations")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"withpreallocations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#withpreallocations"}},[t._v("#")]),t._v(" WithPreallocations")]),t._v(" "),e("p",[t._v("A domain must inherit this class if there are some pre-allocations to consider.")]),t._v(" "),e("h3",{attrs:{id:"get-preallocations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations"}},[t._v("#")]),t._v(" get_preallocations "),e("Badge",{attrs:{text:"WithPreallocations",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),e("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),e("h3",{attrs:{id:"get-preallocations-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-2"}},[t._v("#")]),t._v(" _get_preallocations "),e("Badge",{attrs:{text:"WithPreallocations",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),e("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),e("h2",{attrs:{id:"withoutpreallocations"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#withoutpreallocations"}},[t._v("#")]),t._v(" WithoutPreallocations")]),t._v(" "),e("p",[t._v("A domain must inherit this class if there are no pre-allocations to consider.")]),t._v(" "),e("h3",{attrs:{id:"get-preallocations-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-3"}},[t._v("#")]),t._v(" get_preallocations "),e("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),e("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),e("h3",{attrs:{id:"get-preallocations-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-4"}},[t._v("#")]),t._v(" _get_preallocations "),e("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),e("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")])],1)}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/37.8cc2308e.js b/assets/js/37.5877612b.js similarity index 98% rename from assets/js/37.8cc2308e.js rename to assets/js/37.5877612b.js index 6a359d1462..df642de1f5 100644 --- a/assets/js/37.8cc2308e.js +++ b/assets/js/37.5877612b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{547:function(e,s,t){"use strict";t.r(s);var r=t(38),a=Object(r.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"builders-domain-scheduling-precedence"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-precedence"}},[e._v("#")]),e._v(" builders.domain.scheduling.precedence")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),t("skdecide-summary")],1),e._v(" "),t("h2",{attrs:{id:"withprecedence"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withprecedence"}},[e._v("#")]),e._v(" WithPrecedence")]),e._v(" "),t("p",[e._v("A domain must inherit this class if there exist some predecence constraints between tasks.")]),e._v(" "),t("h3",{attrs:{id:"get-predecessors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors"}},[e._v("#")]),e._v(" get_predecessors "),t("Badge",{attrs:{text:"WithPrecedence",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-successors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-successors"}},[e._v("#")]),e._v(" get_successors "),t("Badge",{attrs:{text:"WithPrecedence",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-predecessors-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-2"}},[e._v("#")]),e._v(" _get_predecessors "),t("Badge",{attrs:{text:"WithPrecedence",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-successors-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-2"}},[e._v("#")]),e._v(" _get_successors "),t("Badge",{attrs:{text:"WithPrecedence",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h2",{attrs:{id:"withoutprecedence"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withoutprecedence"}},[e._v("#")]),e._v(" WithoutPrecedence")]),e._v(" "),t("p",[e._v("A domain must inherit this class if there are no predecence constraints between tasks.")]),e._v(" "),t("h3",{attrs:{id:"get-predecessors-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-3"}},[e._v("#")]),e._v(" get_predecessors "),t("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-successors-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-3"}},[e._v("#")]),e._v(" get_successors "),t("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-predecessors-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-4"}},[e._v("#")]),e._v(" _get_predecessors "),t("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-successors-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-4"}},[e._v("#")]),e._v(" _get_successors "),t("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")])],1)}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{548:function(e,s,t){"use strict";t.r(s);var r=t(38),a=Object(r.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"builders-domain-scheduling-precedence"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-precedence"}},[e._v("#")]),e._v(" builders.domain.scheduling.precedence")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),t("skdecide-summary")],1),e._v(" "),t("h2",{attrs:{id:"withprecedence"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withprecedence"}},[e._v("#")]),e._v(" WithPrecedence")]),e._v(" "),t("p",[e._v("A domain must inherit this class if there exist some predecence constraints between tasks.")]),e._v(" "),t("h3",{attrs:{id:"get-predecessors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors"}},[e._v("#")]),e._v(" get_predecessors "),t("Badge",{attrs:{text:"WithPrecedence",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-successors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-successors"}},[e._v("#")]),e._v(" get_successors "),t("Badge",{attrs:{text:"WithPrecedence",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-predecessors-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-2"}},[e._v("#")]),e._v(" _get_predecessors "),t("Badge",{attrs:{text:"WithPrecedence",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-successors-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-2"}},[e._v("#")]),e._v(" _get_successors "),t("Badge",{attrs:{text:"WithPrecedence",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h2",{attrs:{id:"withoutprecedence"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withoutprecedence"}},[e._v("#")]),e._v(" WithoutPrecedence")]),e._v(" "),t("p",[e._v("A domain must inherit this class if there are no predecence constraints between tasks.")]),e._v(" "),t("h3",{attrs:{id:"get-predecessors-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-3"}},[e._v("#")]),e._v(" get_predecessors "),t("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-successors-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-3"}},[e._v("#")]),e._v(" get_successors "),t("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-predecessors-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-4"}},[e._v("#")]),e._v(" _get_predecessors "),t("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),e._v(" "),t("h3",{attrs:{id:"get-successors-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-4"}},[e._v("#")]),e._v(" _get_successors "),t("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),e._v(" "),t("p",[e._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")])],1)}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/38.bdb4aadb.js b/assets/js/38.09a340e5.js similarity index 99% rename from assets/js/38.bdb4aadb.js rename to assets/js/38.09a340e5.js index 6d58d40561..66fccfe80e 100644 --- a/assets/js/38.bdb4aadb.js +++ b/assets/js/38.09a340e5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{548:function(e,t,a){"use strict";a.r(t);var s=a(38),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-preemptivity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-preemptivity"}},[e._v("#")]),e._v(" builders.domain.scheduling.preemptivity")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"resumetype"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#resumetype"}},[e._v("#")]),e._v(" ResumeType")]),e._v(" "),a("p",[e._v("An enumeration.")]),e._v(" "),a("h2",{attrs:{id:"withpreemptivity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withpreemptivity"}},[e._v("#")]),e._v(" WithPreemptivity")]),e._v(" "),a("p",[e._v("A domain must inherit this class if there exist at least 1 task that can be paused.")]),e._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned"}},[e._v("#")]),e._v(" get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-preemptivity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity"}},[e._v("#")]),e._v(" get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-resuming-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type"}},[e._v("#")]),e._v(" get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-2"}},[e._v("#")]),e._v(" _get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-2"}},[e._v("#")]),e._v(" _get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-2"}},[e._v("#")]),e._v(" _get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),e._v(" "),a("h2",{attrs:{id:"withoutpreemptivity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withoutpreemptivity"}},[e._v("#")]),e._v(" WithoutPreemptivity")]),e._v(" "),a("p",[e._v("A domain must inherit this class if none of the task can be paused.")]),e._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-3"}},[e._v("#")]),e._v(" get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-3"}},[e._v("#")]),e._v(" get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-3"}},[e._v("#")]),e._v(" get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-4"}},[e._v("#")]),e._v(" _get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-4"}},[e._v("#")]),e._v(" _get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-4"}},[e._v("#")]),e._v(" _get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{549:function(e,t,a){"use strict";a.r(t);var s=a(38),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-preemptivity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-preemptivity"}},[e._v("#")]),e._v(" builders.domain.scheduling.preemptivity")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"resumetype"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#resumetype"}},[e._v("#")]),e._v(" ResumeType")]),e._v(" "),a("p",[e._v("An enumeration.")]),e._v(" "),a("h2",{attrs:{id:"withpreemptivity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withpreemptivity"}},[e._v("#")]),e._v(" WithPreemptivity")]),e._v(" "),a("p",[e._v("A domain must inherit this class if there exist at least 1 task that can be paused.")]),e._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned"}},[e._v("#")]),e._v(" get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-preemptivity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity"}},[e._v("#")]),e._v(" get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-resuming-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type"}},[e._v("#")]),e._v(" get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-2"}},[e._v("#")]),e._v(" _get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-2"}},[e._v("#")]),e._v(" _get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-2"}},[e._v("#")]),e._v(" _get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),e._v(" "),a("h2",{attrs:{id:"withoutpreemptivity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withoutpreemptivity"}},[e._v("#")]),e._v(" WithoutPreemptivity")]),e._v(" "),a("p",[e._v("A domain must inherit this class if none of the task can be paused.")]),e._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-3"}},[e._v("#")]),e._v(" get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-3"}},[e._v("#")]),e._v(" get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-3"}},[e._v("#")]),e._v(" get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-4"}},[e._v("#")]),e._v(" _get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-4"}},[e._v("#")]),e._v(" _get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),e._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-4"}},[e._v("#")]),e._v(" _get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/39.be040e86.js b/assets/js/39.1fcc5dab.js similarity index 99% rename from assets/js/39.be040e86.js rename to assets/js/39.1fcc5dab.js index 744ca398ce..c83447c6ce 100644 --- a/assets/js/39.be040e86.js +++ b/assets/js/39.1fcc5dab.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{549:function(e,t,a){"use strict";a.r(t);var r=a(38),s=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-resource-availability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-resource-availability"}},[e._v("#")]),e._v(" builders.domain.scheduling.resource_availability")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"uncertainresourceavailabilitychanges"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uncertainresourceavailabilitychanges"}},[e._v("#")]),e._v(" UncertainResourceAvailabilityChanges")]),e._v(" "),a("p",[e._v("A domain must inherit this class if the availability of its resource vary in an uncertain way over time.")]),e._v(" "),a("h3",{attrs:{id:"check-unique-resource-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names"}},[e._v("#")]),e._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource"}},[e._v("#")]),e._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-2"}},[e._v("#")]),e._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),e._v(" "),a("h2",{attrs:{id:"deterministicresourceavailabilitychanges"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicresourceavailabilitychanges"}},[e._v("#")]),e._v(" DeterministicResourceAvailabilityChanges")]),e._v(" "),a("p",[e._v("A domain must inherit this class if the availability of its resource vary in a deterministic way over time.")]),e._v(" "),a("h3",{attrs:{id:"check-unique-resource-names-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names-2"}},[e._v("#")]),e._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),e._v(" "),a("h3",{attrs:{id:"get-quantity-resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-quantity-resource"}},[e._v("#")]),e._v(" get_quantity_resource "),a("Badge",{attrs:{text:"DeterministicResourceAvailabilityChanges",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource\n(either resource type or resource unit) at the given time.")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-3"}},[e._v("#")]),e._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),e._v(" "),a("h3",{attrs:{id:"get-quantity-resource-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-quantity-resource-2"}},[e._v("#")]),e._v(" _get_quantity_resource "),a("Badge",{attrs:{text:"DeterministicResourceAvailabilityChanges",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource\n(either resource type or resource unit) at the given time.")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-4"}},[e._v("#")]),e._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),e._v(" "),a("h2",{attrs:{id:"withoutresourceavailabilitychange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withoutresourceavailabilitychange"}},[e._v("#")]),e._v(" WithoutResourceAvailabilityChange")]),e._v(" "),a("p",[e._v("A domain must inherit this class if the availability of its resource does not vary over time.")]),e._v(" "),a("h3",{attrs:{id:"check-unique-resource-names-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names-3"}},[e._v("#")]),e._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),e._v(" "),a("h3",{attrs:{id:"get-original-quantity-resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-original-quantity-resource"}},[e._v("#")]),e._v(" get_original_quantity_resource "),a("Badge",{attrs:{text:"WithoutResourceAvailabilityChange",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_original_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource (either resource type or resource unit).")]),e._v(" "),a("h3",{attrs:{id:"get-quantity-resource-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-quantity-resource-3"}},[e._v("#")]),e._v(" get_quantity_resource "),a("Badge",{attrs:{text:"DeterministicResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource\n(either resource type or resource unit) at the given time.")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-5"}},[e._v("#")]),e._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),e._v(" "),a("h3",{attrs:{id:"get-original-quantity-resource-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-original-quantity-resource-2"}},[e._v("#")]),e._v(" _get_original_quantity_resource "),a("Badge",{attrs:{text:"WithoutResourceAvailabilityChange",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_original_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource (either resource type or resource unit).")]),e._v(" "),a("h3",{attrs:{id:"get-quantity-resource-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-quantity-resource-4"}},[e._v("#")]),e._v(" _get_quantity_resource "),a("Badge",{attrs:{text:"DeterministicResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource\n(either resource type or resource unit) at the given time.")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-6"}},[e._v("#")]),e._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{550:function(e,t,a){"use strict";a.r(t);var r=a(38),s=Object(r.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-resource-availability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-resource-availability"}},[e._v("#")]),e._v(" builders.domain.scheduling.resource_availability")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"uncertainresourceavailabilitychanges"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uncertainresourceavailabilitychanges"}},[e._v("#")]),e._v(" UncertainResourceAvailabilityChanges")]),e._v(" "),a("p",[e._v("A domain must inherit this class if the availability of its resource vary in an uncertain way over time.")]),e._v(" "),a("h3",{attrs:{id:"check-unique-resource-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names"}},[e._v("#")]),e._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource"}},[e._v("#")]),e._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-2"}},[e._v("#")]),e._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),e._v(" "),a("h2",{attrs:{id:"deterministicresourceavailabilitychanges"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicresourceavailabilitychanges"}},[e._v("#")]),e._v(" DeterministicResourceAvailabilityChanges")]),e._v(" "),a("p",[e._v("A domain must inherit this class if the availability of its resource vary in a deterministic way over time.")]),e._v(" "),a("h3",{attrs:{id:"check-unique-resource-names-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names-2"}},[e._v("#")]),e._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),e._v(" "),a("h3",{attrs:{id:"get-quantity-resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-quantity-resource"}},[e._v("#")]),e._v(" get_quantity_resource "),a("Badge",{attrs:{text:"DeterministicResourceAvailabilityChanges",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource\n(either resource type or resource unit) at the given time.")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-3"}},[e._v("#")]),e._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),e._v(" "),a("h3",{attrs:{id:"get-quantity-resource-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-quantity-resource-2"}},[e._v("#")]),e._v(" _get_quantity_resource "),a("Badge",{attrs:{text:"DeterministicResourceAvailabilityChanges",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource\n(either resource type or resource unit) at the given time.")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-4"}},[e._v("#")]),e._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),e._v(" "),a("h2",{attrs:{id:"withoutresourceavailabilitychange"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withoutresourceavailabilitychange"}},[e._v("#")]),e._v(" WithoutResourceAvailabilityChange")]),e._v(" "),a("p",[e._v("A domain must inherit this class if the availability of its resource does not vary over time.")]),e._v(" "),a("h3",{attrs:{id:"check-unique-resource-names-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names-3"}},[e._v("#")]),e._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),e._v(" "),a("h3",{attrs:{id:"get-original-quantity-resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-original-quantity-resource"}},[e._v("#")]),e._v(" get_original_quantity_resource "),a("Badge",{attrs:{text:"WithoutResourceAvailabilityChange",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_original_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource (either resource type or resource unit).")]),e._v(" "),a("h3",{attrs:{id:"get-quantity-resource-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-quantity-resource-3"}},[e._v("#")]),e._v(" get_quantity_resource "),a("Badge",{attrs:{text:"DeterministicResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource\n(either resource type or resource unit) at the given time.")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-5"}},[e._v("#")]),e._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),e._v(" "),a("h3",{attrs:{id:"get-original-quantity-resource-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-original-quantity-resource-2"}},[e._v("#")]),e._v(" _get_original_quantity_resource "),a("Badge",{attrs:{text:"WithoutResourceAvailabilityChange",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_original_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource (either resource type or resource unit).")]),e._v(" "),a("h3",{attrs:{id:"get-quantity-resource-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-quantity-resource-4"}},[e._v("#")]),e._v(" _get_quantity_resource "),a("Badge",{attrs:{text:"DeterministicResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Return the resource availability (int) for the given resource\n(either resource type or resource unit) at the given time.")]),e._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-6"}},[e._v("#")]),e._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),e._v(" "),a("p",[e._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/40.4c934f37.js b/assets/js/40.79a4140c.js similarity index 98% rename from assets/js/40.4c934f37.js rename to assets/js/40.79a4140c.js index a64c32f709..90ac037d0e 100644 --- a/assets/js/40.4c934f37.js +++ b/assets/js/40.79a4140c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{550:function(e,t,s){"use strict";s.r(t);var r=s(38),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-resource-consumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-resource-consumption"}},[e._v("#")]),e._v(" builders.domain.scheduling.resource_consumption")]),e._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),s("skdecide-summary")],1),e._v(" "),s("h2",{attrs:{id:"variableresourceconsumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#variableresourceconsumption"}},[e._v("#")]),e._v(" VariableResourceConsumption")]),e._v(" "),s("p",[e._v("A domain must inherit this class if the amount of resource needed by some tasks vary in time.")]),e._v(" "),s("h3",{attrs:{id:"get-variable-resource-consumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption"}},[e._v("#")]),e._v(" get_variable_resource_consumption "),s("Badge",{attrs:{text:"VariableResourceConsumption",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),s("p",[e._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),e._v(" "),s("h3",{attrs:{id:"get-variable-resource-consumption-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-2"}},[e._v("#")]),e._v(" _get_variable_resource_consumption "),s("Badge",{attrs:{text:"VariableResourceConsumption",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),s("p",[e._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),e._v(" "),s("h2",{attrs:{id:"constantresourceconsumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#constantresourceconsumption"}},[e._v("#")]),e._v(" ConstantResourceConsumption")]),e._v(" "),s("p",[e._v("A domain must inherit this class if the amount of resource needed by all tasks do not vary in time.")]),e._v(" "),s("h3",{attrs:{id:"get-variable-resource-consumption-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-3"}},[e._v("#")]),e._v(" get_variable_resource_consumption "),s("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),s("p",[e._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),e._v(" "),s("h3",{attrs:{id:"get-variable-resource-consumption-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-4"}},[e._v("#")]),e._v(" _get_variable_resource_consumption "),s("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),s("p",[e._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")])],1)}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{551:function(e,t,s){"use strict";s.r(t);var r=s(38),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-resource-consumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-resource-consumption"}},[e._v("#")]),e._v(" builders.domain.scheduling.resource_consumption")]),e._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),s("skdecide-summary")],1),e._v(" "),s("h2",{attrs:{id:"variableresourceconsumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#variableresourceconsumption"}},[e._v("#")]),e._v(" VariableResourceConsumption")]),e._v(" "),s("p",[e._v("A domain must inherit this class if the amount of resource needed by some tasks vary in time.")]),e._v(" "),s("h3",{attrs:{id:"get-variable-resource-consumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption"}},[e._v("#")]),e._v(" get_variable_resource_consumption "),s("Badge",{attrs:{text:"VariableResourceConsumption",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),s("p",[e._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),e._v(" "),s("h3",{attrs:{id:"get-variable-resource-consumption-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-2"}},[e._v("#")]),e._v(" _get_variable_resource_consumption "),s("Badge",{attrs:{text:"VariableResourceConsumption",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),s("p",[e._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),e._v(" "),s("h2",{attrs:{id:"constantresourceconsumption"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#constantresourceconsumption"}},[e._v("#")]),e._v(" ConstantResourceConsumption")]),e._v(" "),s("p",[e._v("A domain must inherit this class if the amount of resource needed by all tasks do not vary in time.")]),e._v(" "),s("h3",{attrs:{id:"get-variable-resource-consumption-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-3"}},[e._v("#")]),e._v(" get_variable_resource_consumption "),s("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),s("p",[e._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),e._v(" "),s("h3",{attrs:{id:"get-variable-resource-consumption-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-4"}},[e._v("#")]),e._v(" _get_variable_resource_consumption "),s("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),e._v(" "),s("p",[e._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")])],1)}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/41.45db3c9e.js b/assets/js/41.603bccf2.js similarity index 98% rename from assets/js/41.45db3c9e.js rename to assets/js/41.603bccf2.js index 6f50fd3ae9..707fd4437a 100644 --- a/assets/js/41.45db3c9e.js +++ b/assets/js/41.603bccf2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{551:function(t,e,s){"use strict";s.r(e);var r=s(38),a=Object(r.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-resource-costs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-resource-costs"}},[t._v("#")]),t._v(" builders.domain.scheduling.resource_costs")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),s("skdecide-summary")],1),t._v(" "),s("h2",{attrs:{id:"withmodecosts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withmodecosts"}},[t._v("#")]),t._v(" WithModeCosts")]),t._v(" "),s("p",[t._v("A domain must inherit this class if there are some mode costs to consider.")]),t._v(" "),s("h3",{attrs:{id:"get-mode-costs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs"}},[t._v("#")]),t._v(" get_mode_costs "),s("Badge",{attrs:{text:"WithModeCosts",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),s("h3",{attrs:{id:"get-mode-costs-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-2"}},[t._v("#")]),t._v(" _get_mode_costs "),s("Badge",{attrs:{text:"WithModeCosts",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),s("h2",{attrs:{id:"withoutmodecosts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withoutmodecosts"}},[t._v("#")]),t._v(" WithoutModeCosts")]),t._v(" "),s("p",[t._v("A domain must inherit this class if there are no mode cost to consider.")]),t._v(" "),s("h3",{attrs:{id:"get-mode-costs-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-3"}},[t._v("#")]),t._v(" get_mode_costs "),s("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),s("h3",{attrs:{id:"get-mode-costs-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-4"}},[t._v("#")]),t._v(" _get_mode_costs "),s("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),s("h2",{attrs:{id:"withresourcecosts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withresourcecosts"}},[t._v("#")]),t._v(" WithResourceCosts")]),t._v(" "),s("p",[t._v("A domain must inherit this class if there are some resource costs to consider.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-cost-per-time-unit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit"}},[t._v("#")]),t._v(" get_resource_cost_per_time_unit "),s("Badge",{attrs:{text:"WithResourceCosts",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),s("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-cost-per-time-unit-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-2"}},[t._v("#")]),t._v(" _get_resource_cost_per_time_unit "),s("Badge",{attrs:{text:"WithResourceCosts",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),s("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),s("h2",{attrs:{id:"withoutresourcecosts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withoutresourcecosts"}},[t._v("#")]),t._v(" WithoutResourceCosts")]),t._v(" "),s("p",[t._v("A domain must inherit this class if there are no resource cost to consider.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-cost-per-time-unit-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-3"}},[t._v("#")]),t._v(" get_resource_cost_per_time_unit "),s("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),s("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-cost-per-time-unit-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-4"}},[t._v("#")]),t._v(" _get_resource_cost_per_time_unit "),s("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),s("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")])],1)}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{552:function(t,e,s){"use strict";s.r(e);var r=s(38),a=Object(r.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-resource-costs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-resource-costs"}},[t._v("#")]),t._v(" builders.domain.scheduling.resource_costs")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),s("skdecide-summary")],1),t._v(" "),s("h2",{attrs:{id:"withmodecosts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withmodecosts"}},[t._v("#")]),t._v(" WithModeCosts")]),t._v(" "),s("p",[t._v("A domain must inherit this class if there are some mode costs to consider.")]),t._v(" "),s("h3",{attrs:{id:"get-mode-costs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs"}},[t._v("#")]),t._v(" get_mode_costs "),s("Badge",{attrs:{text:"WithModeCosts",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),s("h3",{attrs:{id:"get-mode-costs-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-2"}},[t._v("#")]),t._v(" _get_mode_costs "),s("Badge",{attrs:{text:"WithModeCosts",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),s("h2",{attrs:{id:"withoutmodecosts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withoutmodecosts"}},[t._v("#")]),t._v(" WithoutModeCosts")]),t._v(" "),s("p",[t._v("A domain must inherit this class if there are no mode cost to consider.")]),t._v(" "),s("h3",{attrs:{id:"get-mode-costs-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-3"}},[t._v("#")]),t._v(" get_mode_costs "),s("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),s("h3",{attrs:{id:"get-mode-costs-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-4"}},[t._v("#")]),t._v(" _get_mode_costs "),s("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),s("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),s("h2",{attrs:{id:"withresourcecosts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withresourcecosts"}},[t._v("#")]),t._v(" WithResourceCosts")]),t._v(" "),s("p",[t._v("A domain must inherit this class if there are some resource costs to consider.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-cost-per-time-unit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit"}},[t._v("#")]),t._v(" get_resource_cost_per_time_unit "),s("Badge",{attrs:{text:"WithResourceCosts",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),s("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-cost-per-time-unit-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-2"}},[t._v("#")]),t._v(" _get_resource_cost_per_time_unit "),s("Badge",{attrs:{text:"WithResourceCosts",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),s("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),s("h2",{attrs:{id:"withoutresourcecosts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withoutresourcecosts"}},[t._v("#")]),t._v(" WithoutResourceCosts")]),t._v(" "),s("p",[t._v("A domain must inherit this class if there are no resource cost to consider.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-cost-per-time-unit-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-3"}},[t._v("#")]),t._v(" get_resource_cost_per_time_unit "),s("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),s("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),s("h3",{attrs:{id:"get-resource-cost-per-time-unit-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-4"}},[t._v("#")]),t._v(" _get_resource_cost_per_time_unit "),s("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),s("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")])],1)}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/42.21215d97.js b/assets/js/42.17aef09d.js similarity index 98% rename from assets/js/42.21215d97.js rename to assets/js/42.17aef09d.js index 85e3fef110..19dd7224af 100644 --- a/assets/js/42.21215d97.js +++ b/assets/js/42.17aef09d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{552:function(e,t,a){"use strict";a.r(t);var s=a(38),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-resource-renewability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-resource-renewability"}},[e._v("#")]),e._v(" builders.domain.scheduling.resource_renewability")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"mixedrenewable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mixedrenewable"}},[e._v("#")]),e._v(" MixedRenewable")]),e._v(" "),a("p",[e._v("A domain must inherit this class if the resource available are non-renewable and renewable.")]),e._v(" "),a("h3",{attrs:{id:"all-tasks-possible"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-tasks-possible"}},[e._v("#")]),e._v(" all_tasks_possible "),a("Badge",{attrs:{text:"MixedRenewable",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"all_tasks_possible",sig:{params:[{name:"self"},{name:"state",annotation:"State"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Return a True is for each task there is at least one mode in which the task can be executed, given the\nresource configuration in the state provided as argument. Returns False otherwise.\nIf this function returns False, the scheduling problem is unsolvable from this state.\nThis is to cope with the use of non-renable resources that may lead to state from which a\ntask will not be possible anymore.")]),e._v(" "),a("h3",{attrs:{id:"get-resource-renewability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability"}},[e._v("#")]),e._v(" get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),e._v(" "),a("h3",{attrs:{id:"get-resource-renewability-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-2"}},[e._v("#")]),e._v(" _get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),e._v(" "),a("h2",{attrs:{id:"renewableonly"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#renewableonly"}},[e._v("#")]),e._v(" RenewableOnly")]),e._v(" "),a("p",[e._v("A domain must inherit this class if the resource available are ALL renewable.")]),e._v(" "),a("h3",{attrs:{id:"all-tasks-possible-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-tasks-possible-2"}},[e._v("#")]),e._v(" all_tasks_possible "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"all_tasks_possible",sig:{params:[{name:"self"},{name:"state",annotation:"State"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Return a True is for each task there is at least one mode in which the task can be executed, given the\nresource configuration in the state provided as argument. Returns False otherwise.\nIf this function returns False, the scheduling problem is unsolvable from this state.\nThis is to cope with the use of non-renable resources that may lead to state from which a\ntask will not be possible anymore.")]),e._v(" "),a("h3",{attrs:{id:"get-resource-renewability-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-3"}},[e._v("#")]),e._v(" get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),e._v(" "),a("h3",{attrs:{id:"get-resource-renewability-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-4"}},[e._v("#")]),e._v(" _get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{553:function(e,t,a){"use strict";a.r(t);var s=a(38),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-resource-renewability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-resource-renewability"}},[e._v("#")]),e._v(" builders.domain.scheduling.resource_renewability")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"mixedrenewable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mixedrenewable"}},[e._v("#")]),e._v(" MixedRenewable")]),e._v(" "),a("p",[e._v("A domain must inherit this class if the resource available are non-renewable and renewable.")]),e._v(" "),a("h3",{attrs:{id:"all-tasks-possible"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-tasks-possible"}},[e._v("#")]),e._v(" all_tasks_possible "),a("Badge",{attrs:{text:"MixedRenewable",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"all_tasks_possible",sig:{params:[{name:"self"},{name:"state",annotation:"State"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Return a True is for each task there is at least one mode in which the task can be executed, given the\nresource configuration in the state provided as argument. Returns False otherwise.\nIf this function returns False, the scheduling problem is unsolvable from this state.\nThis is to cope with the use of non-renable resources that may lead to state from which a\ntask will not be possible anymore.")]),e._v(" "),a("h3",{attrs:{id:"get-resource-renewability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability"}},[e._v("#")]),e._v(" get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),e._v(" "),a("h3",{attrs:{id:"get-resource-renewability-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-2"}},[e._v("#")]),e._v(" _get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),e._v(" "),a("h2",{attrs:{id:"renewableonly"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#renewableonly"}},[e._v("#")]),e._v(" RenewableOnly")]),e._v(" "),a("p",[e._v("A domain must inherit this class if the resource available are ALL renewable.")]),e._v(" "),a("h3",{attrs:{id:"all-tasks-possible-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-tasks-possible-2"}},[e._v("#")]),e._v(" all_tasks_possible "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"all_tasks_possible",sig:{params:[{name:"self"},{name:"state",annotation:"State"}],return:"bool"}}}),e._v(" "),a("p",[e._v("Return a True is for each task there is at least one mode in which the task can be executed, given the\nresource configuration in the state provided as argument. Returns False otherwise.\nIf this function returns False, the scheduling problem is unsolvable from this state.\nThis is to cope with the use of non-renable resources that may lead to state from which a\ntask will not be possible anymore.")]),e._v(" "),a("h3",{attrs:{id:"get-resource-renewability-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-3"}},[e._v("#")]),e._v(" get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),e._v(" "),a("h3",{attrs:{id:"get-resource-renewability-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-4"}},[e._v("#")]),e._v(" _get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),e._v(" "),a("p",[e._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")])],1)}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/43.7c12ad8c.js b/assets/js/43.10c2444a.js similarity index 99% rename from assets/js/43.7c12ad8c.js rename to assets/js/43.10c2444a.js index 8d82629482..5760af2e62 100644 --- a/assets/js/43.7c12ad8c.js +++ b/assets/js/43.10c2444a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{553:function(e,t,s){"use strict";s.r(t);var r=s(38),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-resource-type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-resource-type"}},[e._v("#")]),e._v(" builders.domain.scheduling.resource_type")]),e._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),s("skdecide-summary")],1),e._v(" "),s("h2",{attrs:{id:"withresourcetypes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withresourcetypes"}},[e._v("#")]),e._v(" WithResourceTypes")]),e._v(" "),s("p",[e._v("A domain must inherit this class if some of its resources are resource types.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-types-names"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names"}},[e._v("#")]),e._v(" get_resource_types_names "),s("Badge",{attrs:{text:"WithResourceTypes",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource types as a list.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-types-names-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-2"}},[e._v("#")]),e._v(" _get_resource_types_names "),s("Badge",{attrs:{text:"WithResourceTypes",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource types as a list.")]),e._v(" "),s("h2",{attrs:{id:"withoutresourcetypes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withoutresourcetypes"}},[e._v("#")]),e._v(" WithoutResourceTypes")]),e._v(" "),s("p",[e._v("A domain must inherit this class if it only uses resource types.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-types-names-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-3"}},[e._v("#")]),e._v(" get_resource_types_names "),s("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource types as a list.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-types-names-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-4"}},[e._v("#")]),e._v(" _get_resource_types_names "),s("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource types as a list.")]),e._v(" "),s("h2",{attrs:{id:"withresourceunits"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withresourceunits"}},[e._v("#")]),e._v(" WithResourceUnits")]),e._v(" "),s("p",[e._v("A domain must inherit this class if some of its resources are resource units.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit"}},[e._v("#")]),e._v(" get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names"}},[e._v("#")]),e._v(" get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-2"}},[e._v("#")]),e._v(" _get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-2"}},[e._v("#")]),e._v(" _get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")]),e._v(" "),s("h2",{attrs:{id:"singleresourceunit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#singleresourceunit"}},[e._v("#")]),e._v(" SingleResourceUnit")]),e._v(" "),s("p",[e._v("A domain must inherit this class if there is no allocation to be done (i.e. there is a single resource).")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-3"}},[e._v("#")]),e._v(" get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-3"}},[e._v("#")]),e._v(" get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-4"}},[e._v("#")]),e._v(" _get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-4"}},[e._v("#")]),e._v(" _get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")]),e._v(" "),s("h2",{attrs:{id:"withoutresourceunit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withoutresourceunit"}},[e._v("#")]),e._v(" WithoutResourceUnit")]),e._v(" "),s("p",[e._v("A domain must inherit this class if it only uses resource types.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-5"}},[e._v("#")]),e._v(" get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-5"}},[e._v("#")]),e._v(" get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-6"}},[e._v("#")]),e._v(" _get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-6"}},[e._v("#")]),e._v(" _get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")])],1)}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{554:function(e,t,s){"use strict";s.r(t);var r=s(38),a=Object(r.a)({},(function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-resource-type"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-resource-type"}},[e._v("#")]),e._v(" builders.domain.scheduling.resource_type")]),e._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),s("skdecide-summary")],1),e._v(" "),s("h2",{attrs:{id:"withresourcetypes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withresourcetypes"}},[e._v("#")]),e._v(" WithResourceTypes")]),e._v(" "),s("p",[e._v("A domain must inherit this class if some of its resources are resource types.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-types-names"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names"}},[e._v("#")]),e._v(" get_resource_types_names "),s("Badge",{attrs:{text:"WithResourceTypes",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource types as a list.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-types-names-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-2"}},[e._v("#")]),e._v(" _get_resource_types_names "),s("Badge",{attrs:{text:"WithResourceTypes",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource types as a list.")]),e._v(" "),s("h2",{attrs:{id:"withoutresourcetypes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withoutresourcetypes"}},[e._v("#")]),e._v(" WithoutResourceTypes")]),e._v(" "),s("p",[e._v("A domain must inherit this class if it only uses resource types.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-types-names-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-3"}},[e._v("#")]),e._v(" get_resource_types_names "),s("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource types as a list.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-types-names-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-4"}},[e._v("#")]),e._v(" _get_resource_types_names "),s("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource types as a list.")]),e._v(" "),s("h2",{attrs:{id:"withresourceunits"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withresourceunits"}},[e._v("#")]),e._v(" WithResourceUnits")]),e._v(" "),s("p",[e._v("A domain must inherit this class if some of its resources are resource units.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit"}},[e._v("#")]),e._v(" get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names"}},[e._v("#")]),e._v(" get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-2"}},[e._v("#")]),e._v(" _get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-2"}},[e._v("#")]),e._v(" _get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"tip"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")]),e._v(" "),s("h2",{attrs:{id:"singleresourceunit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#singleresourceunit"}},[e._v("#")]),e._v(" SingleResourceUnit")]),e._v(" "),s("p",[e._v("A domain must inherit this class if there is no allocation to be done (i.e. there is a single resource).")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-3"}},[e._v("#")]),e._v(" get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-3"}},[e._v("#")]),e._v(" get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-4"}},[e._v("#")]),e._v(" _get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-4"}},[e._v("#")]),e._v(" _get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")]),e._v(" "),s("h2",{attrs:{id:"withoutresourceunit"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#withoutresourceunit"}},[e._v("#")]),e._v(" WithoutResourceUnit")]),e._v(" "),s("p",[e._v("A domain must inherit this class if it only uses resource types.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-5"}},[e._v("#")]),e._v(" get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names-5"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-5"}},[e._v("#")]),e._v(" get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-type-for-unit-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-6"}},[e._v("#")]),e._v(" _get_resource_type_for_unit "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),e._v(" "),s("p",[e._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),e._v(" "),s("h3",{attrs:{id:"get-resource-units-names-6"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-6"}},[e._v("#")]),e._v(" _get_resource_units_names "),s("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),e._v(" "),s("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),e._v(" "),s("p",[e._v("Return the names (string) of all resource units as a list.")])],1)}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/44.85bd56cd.js b/assets/js/44.635efb10.js similarity index 99% rename from assets/js/44.85bd56cd.js rename to assets/js/44.635efb10.js index 3c4baaa741..b1f34b426e 100644 --- a/assets/js/44.85bd56cd.js +++ b/assets/js/44.635efb10.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{554:function(t,e,a){"use strict";a.r(e);var s=a(38),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-scheduling-domains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-scheduling-domains"}},[t._v("#")]),t._v(" builders.domain.scheduling.scheduling_domains")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"schedulingobjectiveenum"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schedulingobjectiveenum"}},[t._v("#")]),t._v(" SchedulingObjectiveEnum")]),t._v(" "),a("p",[t._v("Enum defining the different scheduling objectives:")]),t._v(" "),a("ul",[a("li",[t._v("MAKESPAN: makespan (to be minimize)")]),t._v(" "),a("li",[t._v("COST: cost of resources (to be minimized)")])]),t._v(" "),a("h2",{attrs:{id:"d"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#d"}},[t._v("#")]),t._v(" D")]),t._v(" "),a("p",[t._v("Base class for any scheduling statefull domain")]),t._v(" "),a("h3",{attrs:{id:"check-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-2"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-2"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-3"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-2"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-2"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-2"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-3"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-2"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-3"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-2"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-3"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-2"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-2"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-2"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-2"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-3"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-2"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-2"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-2"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-2"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-2"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-2"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-52"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"schedulingdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schedulingdomain"}},[t._v("#")]),t._v(" SchedulingDomain")]),t._v(" "),a("p",[t._v("This is the highest level scheduling domain class (inheriting top-level class for each mandatory\ndomain characteristic).\nThis is where the implementation of the statefull scheduling domain is implemented,\nletting to the user the possibility\nto the user to define the scheduling problem without having to think of a statefull version.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions"}},[t._v("#")]),t._v(" add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"all-tasks-possible"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-tasks-possible"}},[t._v("#")]),t._v(" all_tasks_possible "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"all_tasks_possible",sig:{params:[{name:"self"},{name:"state",annotation:"State"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return a True is for each task there is at least one mode in which the task can be executed, given the\nresource configuration in the state provided as argument. Returns False otherwise.\nIf this function returns False, the scheduling problem is unsolvable from this state.\nThis is to cope with the use of non-renable resources that may lead to state from which a\ntask will not be possible anymore.")]),t._v(" "),a("h3",{attrs:{id:"check-if-action-can-be-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-if-action-can-be-started"}},[t._v("#")]),t._v(" check_if_action_can_be_started "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_if_action_can_be_started",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}],return:"Tuple[bool, Dict[str, int]]"}}}),t._v(" "),a("p",[t._v("Check if a start or resume action can be applied. It returns a boolean and a dictionary of resources to use.")]),t._v(" "),a("h3",{attrs:{id:"check-unique-resource-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names"}},[t._v("#")]),t._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),t._v(" "),a("h3",{attrs:{id:"check-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-3"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-53"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"find-one-ressource-to-do-one-task"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#find-one-ressource-to-do-one-task"}},[t._v("#")]),t._v(" find_one_ressource_to_do_one_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"find_one_ressource_to_do_one_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("For the common case when it is possible to do the task by one resource unit.\nFor general case, it might just return no possible ressource unit.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-4"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-54"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-all-condition-items"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-condition-items"}},[t._v("#")]),t._v(" get_all_condition_items "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_condition_items",sig:{params:[{name:"self"}],return:"Enum"}}}),t._v(" "),a("p",[t._v("Return an Enum with all the elements that can be used to define a condition.")]),t._v(" "),a("p",[t._v("Example:\nreturn\nConditionElementsExample(Enum):\nOK = 0\nNC_PART_1_OPERATION_1 = 1\nNC_PART_1_OPERATION_2 = 2\nNC_PART_2_OPERATION_1 = 3\nNC_PART_2_OPERATION_2 = 4\nHARDWARE_ISSUE_MACHINE_A = 5\nHARDWARE_ISSUE_MACHINE_B = 6")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills"}},[t._v("#")]),t._v(" get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills"}},[t._v("#")]),t._v(" get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks"}},[t._v("#")]),t._v(" get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-3"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-55"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks"}},[t._v("#")]),t._v(" get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-3"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-56"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-4"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-57"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-4"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-58"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-4"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-59"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon"}},[t._v("#")]),t._v(" get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs"}},[t._v("#")]),t._v(" get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives"}},[t._v("#")]),t._v(" get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-3"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-60"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-3"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-61"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-4"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-62"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations"}},[t._v("#")]),t._v(" get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors"}},[t._v("#")]),t._v(" get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit"}},[t._v("#")]),t._v(" get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability"}},[t._v("#")]),t._v(" get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit"}},[t._v("#")]),t._v(" get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names"}},[t._v("#")]),t._v(" get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names"}},[t._v("#")]),t._v(" get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-names"}},[t._v("#")]),t._v(" get_skills_names "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_names",sig:{params:[{name:"self"}],return:"Set[str]"}}}),t._v(" "),a("p",[t._v("Return a list of all skill names as a list of str. Skill names are defined in the 2 dictionaries returned\nby the get_all_resources_skills and get_all_tasks_skills functions.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-resource"}},[t._v("#")]),t._v(" get_skills_of_resource "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skills of a given resource")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-task"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-task"}},[t._v("#")]),t._v(" get_skills_of_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skill requirements for a given task")]),t._v(" "),a("h3",{attrs:{id:"get-successors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors"}},[t._v("#")]),t._v(" get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions"}},[t._v("#")]),t._v(" get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-on-completion-added-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-on-completion-added-conditions"}},[t._v("#")]),t._v(" get_task_on_completion_added_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_on_completion_added_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[Distribution]]"}}}),t._v(" "),a("p",[t._v("Return a dict of list. The key of the dict is the task id and each list is composed of a list of tuples.\nEach tuple contains the probability (first item in tuple) that the conditionElement (second item in tuple)\nis True. The probabilities in the inner list should sum up to 1. The dictionary should only contains the keys\nof tasks that can create conditions.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n12:\n[\nDiscreteDistribution([(ConditionElementsExample.NC_PART_1_OPERATION_1, 0.1), (ConditionElementsExample.OK, 0.9)]),\nDiscreteDistribution([(ConditionElementsExample.HARDWARE_ISSUE_MACHINE_A, 0.05), ('paper', 0.1), (ConditionElementsExample.OK, 0.95)])\n]\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned"}},[t._v("#")]),t._v(" get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity"}},[t._v("#")]),t._v(" get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress"}},[t._v("#")]),t._v(" get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-63"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type"}},[t._v("#")]),t._v(" get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags"}},[t._v("#")]),t._v(" get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-64"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window"}},[t._v("#")]),t._v(" get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-65"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption"}},[t._v("#")]),t._v(" get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"initialize-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize-domain"}},[t._v("#")]),t._v(" initialize_domain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"initialize_domain",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Initialize a scheduling domain. This function needs to be called when instantiating a scheduling domain.")]),t._v(" "),a("h3",{attrs:{id:"is-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-3"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-66"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-3"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-67"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-3"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-68"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-3"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-69"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-3"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-70"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-3"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-71"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-72"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions"}},[t._v("#")]),t._v(" sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource"}},[t._v("#")]),t._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration"}},[t._v("#")]),t._v(" sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample, store and return task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-inplace-environment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-inplace-environment"}},[t._v("#")]),t._v(" set_inplace_environment "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_inplace_environment",sig:{params:[{name:"self"},{name:"inplace_environment",annotation:"bool"}]}}}),t._v(" "),a("p",[t._v("Activate or not the fact that the simulator modifies the given state inplace or create a copy before.\nThe inplace version is several times faster but will lead to bugs in graph search solver.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-3"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-2"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-73"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-74"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks"}},[t._v("#")]),t._v(" update_complete_dummy_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly started tasks whose duration is 0 from ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-simulation"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-uncertain"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks"}},[t._v("#")]),t._v(" update_complete_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-simulation"}},[t._v("#")]),t._v(" update_complete_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-uncertain"}},[t._v("#")]),t._v(" update_complete_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly completed tasks in the state from ongoing\nto complete, update resource availability and update on-completion conditions.\nThis function will also log in task_details the time it was complete.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks"}},[t._v("#")]),t._v(" update_conditional_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-simulation"}},[t._v("#")]),t._v(" update_conditional_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update remaining tasks by checking conditions and potentially\nadding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-uncertain"}},[t._v("#")]),t._v(" update_conditional_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks"}},[t._v("#")]),t._v(" update_pause_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from ongoing to paused if specified in the action\nand update resource availability. This function will also log in task_details the time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-simulation"}},[t._v("#")]),t._v(" update_pause_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-uncertain"}},[t._v("#")]),t._v(" update_pause_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-progress"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress"}},[t._v("#")]),t._v(" update_progress "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-simulation"}},[t._v("#")]),t._v(" update_progress_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-uncertain"}},[t._v("#")]),t._v(" update_progress_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability"}},[t._v("#")]),t._v(" update_resource_availability "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-simulation"}},[t._v("#")]),t._v(" update_resource_availability_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update resource availability for next time step.\nThis should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-uncertain"}},[t._v("#")]),t._v(" update_resource_availability_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks"}},[t._v("#")]),t._v(" update_resume_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from paused to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was resumed")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-simulation"}},[t._v("#")]),t._v(" update_resume_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulationn scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-uncertain"}},[t._v("#")]),t._v(" update_resume_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks"}},[t._v("#")]),t._v(" update_start_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from remaining to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-simulation"}},[t._v("#")]),t._v(" update_start_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of a task from remaining to ongoing if\nspecified in the action and update resource availability. This function will also log in task_details the\ntime it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-uncertain"}},[t._v("#")]),t._v(" update_start_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from remaining to ongoing\nif specified in the action and update resource availability.\nThis function returns a DsicreteDistribution of State.\nThis function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time"}},[t._v("#")]),t._v(" update_time "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-simulation"}},[t._v("#")]),t._v(" update_time_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the time of the state if the time_progress attribute of the\ngiven EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-uncertain"}},[t._v("#")]),t._v(" update_time_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-2"}},[t._v("#")]),t._v(" _add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"check-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-4"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-75"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-5"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-76"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-6"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-2"}},[t._v("#")]),t._v(" _get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-2"}},[t._v("#")]),t._v(" _get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-2"}},[t._v("#")]),t._v(" _get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-4"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-77"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-2"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Returns the action space from a state.\nTODO : think about a way to avoid the instaceof usage.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-2"}},[t._v("#")]),t._v(" _get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-4"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-78"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-2"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-79"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-5"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-80"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-6"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-81"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-5"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-82"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-6"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Create and return an empty initial state")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-5"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-83"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-6"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-84"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon-2"}},[t._v("#")]),t._v(" _get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-3"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-85"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-4"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-86"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-2"}},[t._v("#")]),t._v(" _get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with DeterministicTransitions. This function will be ignored\nif the domain is defined as having UncertainTransitions or Simulation.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with UncertainTransitions. This function will be ignored\nif the domain is defined as a Simulation. This function may also be used by uncertainty-specialised solvers\non deterministic domains.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives-2"}},[t._v("#")]),t._v(" _get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-4"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-53"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-87"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-4"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-54"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-88"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-5"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-89"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-6"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-2"}},[t._v("#")]),t._v(" _get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-2"}},[t._v("#")]),t._v(" _get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-2"}},[t._v("#")]),t._v(" _get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-2"}},[t._v("#")]),t._v(" _get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-2"}},[t._v("#")]),t._v(" _get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-2"}},[t._v("#")]),t._v(" _get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-2"}},[t._v("#")]),t._v(" _get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-successors-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-2"}},[t._v("#")]),t._v(" _get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-2"}},[t._v("#")]),t._v(" _get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-2"}},[t._v("#")]),t._v(" _get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-2"}},[t._v("#")]),t._v(" _get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-2"}},[t._v("#")]),t._v(" _get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-90"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-2"}},[t._v("#")]),t._v(" _get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-ids"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-ids"}},[t._v("#")]),t._v(" _get_tasks_ids "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_ids",sig:{params:[{name:"self"}],return:"Union[Set[int], Dict[int, Any], List[int]]"}}}),t._v(" "),a("p",[t._v("Return a set or dict of int = id of tasks")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-modes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-modes"}},[t._v("#")]),t._v(" _get_tasks_modes "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_modes",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, ModeConsumption]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is a task id and the second key is a mode id.\nThe value is a Mode object defining the resource consumption.\nIf the domain is an instance of VariableResourceConsumption, VaryingModeConsumption objects should be used.\nIf this is not the case (i.e. the domain is an instance of ConstantResourceConsumption),\nthen ConstantModeConsumption should be used.")]),t._v(" "),a("p",[t._v("E.g. with constant resource consumption\n{\n12: {\n1: ConstantModeConsumption({'rt_1': 2, 'rt_2': 0, 'ru_1': 1}),\n2: ConstantModeConsumption({'rt_1': 0, 'rt_2': 3, 'ru_1': 1}),\n}\n}")]),t._v(" "),a("p",[t._v("E.g. with time varying resource consumption\n{\n12: {\n1: VaryingModeConsumption({'rt_1': [2,2,2,2,3], 'rt_2': [0,0,0,0,0], 'ru_1': [1,1,1,1,1]}),\n2: VaryingModeConsumption({'rt_1': [1,1,1,1,2,2,2], 'rt_2': [0,0,0,0,0,0,0], 'ru_1': [1,1,1,1,1,1,1]}),\n}\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-2"}},[t._v("#")]),t._v(" _get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-91"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-2"}},[t._v("#")]),t._v(" _get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-92"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-2"}},[t._v("#")]),t._v(" _get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"init-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-2"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-55"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-93"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-4"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-56"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-94"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-4"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-57"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-95"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-2"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-58"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-96"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-4"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-59"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-97"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-2"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-60"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-98"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-4"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-61"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-99"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-4"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-62"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-100"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-4"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-101"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-63"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-102"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-2"}},[t._v("#")]),t._v(" _sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-2"}},[t._v("#")]),t._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-2"}},[t._v("#")]),t._v(" _sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return a task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-4"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-64"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-2"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-103"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-2"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined as a Simulation (i.e. transitions are defined by call to\na simulation). This function may also be used by simulation-based solvers on non-Simulation domains.")]),t._v(" "),a("h3",{attrs:{id:"state-step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-2"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-65"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-104"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-66"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-105"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"d-det"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#d-det"}},[t._v("#")]),t._v(" D_det")]),t._v(" "),a("p",[t._v("Base class for deterministic scheduling problems")]),t._v(" "),a("h3",{attrs:{id:"check-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-5"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-67"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-106"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-7"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-107"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-5"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-68"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-108"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-5"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-69"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-109"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-7"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-110"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-7"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-111"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-7"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-112"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-2"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-70"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-113"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-2"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-71"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-114"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-5"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-72"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-115"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-5"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-73"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-116"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-7"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-117"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-74"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-118"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-5"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-75"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-119"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-5"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-76"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-120"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-5"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-77"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-121"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-5"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-78"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-122"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-5"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-79"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-123"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-80"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-124"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-125"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-5"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-126"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-5"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-81"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-127"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-5"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-82"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-3"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-83"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-128"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-84"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-129"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-6"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-85"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-130"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-8"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-131"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-9"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-132"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-6"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-86"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-133"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-3"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-87"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-134"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-6"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-88"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-135"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-3"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-89"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-136"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-8"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-137"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-9"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-138"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-8"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-139"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-9"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-140"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-8"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-141"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-9"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-142"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-5"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-143"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-6"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-144"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-3"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-90"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-145"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-3"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"SingleValueDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-91"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-146"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-6"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-92"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-147"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-6"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-93"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-148"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-8"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-149"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-9"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-150"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-2"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-94"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-151"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-3"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-95"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-152"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-6"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-96"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-153"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-6"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-97"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-154"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-3"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-98"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-155"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-6"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-99"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-156"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-3"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-100"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-157"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-6"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-101"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-158"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-6"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-102"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-159"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-2"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-103"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-160"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-2"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-161"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-3"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-162"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-6"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-163"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-6"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-104"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-164"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-6"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-105"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-3"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-165"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-3"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-106"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-166"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-3"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-107"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-167"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-6"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-108"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-168"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"d-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#d-uncertain"}},[t._v("#")]),t._v(" D_uncertain")]),t._v(" "),a("p",[t._v("Base class for uncertain scheduling problems where we can compute distributions")]),t._v(" "),a("h3",{attrs:{id:"check-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-7"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-109"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-169"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-10"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-170"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-7"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-110"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-171"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-7"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-111"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-172"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-10"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-173"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-10"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-174"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-10"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-175"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-4"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-112"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-176"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-7"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-113"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-177"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-7"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-114"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-178"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-10"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-179"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-3"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-115"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-180"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-7"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-116"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-181"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-7"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-117"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-182"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-7"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-118"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-183"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-7"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-119"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-184"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-7"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-120"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-185"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-3"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-121"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-186"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-4"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-187"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-7"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-188"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-7"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-122"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-189"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-7"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-123"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-4"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-124"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-190"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-7"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-125"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-191"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-8"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-126"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-192"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-11"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-193"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-12"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-194"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-8"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-127"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-195"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-4"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-128"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-196"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-8"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-129"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-197"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-4"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-130"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-198"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-11"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-199"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-12"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-200"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-11"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-201"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-12"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-202"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-11"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-203"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-12"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-204"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-7"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-205"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-205"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-8"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-206"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-206"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-5"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-131"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-207"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-207"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-8"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-132"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-208"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-208"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-8"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-133"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-209"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-209"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-11"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-210"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-210"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-12"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-211"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-211"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-4"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-134"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-212"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-212"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-4"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-135"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-213"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-213"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-8"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-136"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-214"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-214"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-8"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-137"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-215"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-215"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-4"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-138"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-216"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-216"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-8"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-139"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-217"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-217"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-4"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-140"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-218"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-218"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-8"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-141"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-219"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-219"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-8"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-142"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-220"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-220"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-4"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-143"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-221"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-221"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-5"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-222"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-222"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-6"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-223"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-223"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-8"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-224"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-224"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-8"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-144"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-225"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-225"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-8"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-145"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-4"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-226"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-226"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-4"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-146"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-227"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-227"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-4"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-147"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-228"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-228"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-8"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-148"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-229"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-229"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"uncertainschedulingdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uncertainschedulingdomain"}},[t._v("#")]),t._v(" UncertainSchedulingDomain")]),t._v(" "),a("p",[t._v("This is the highest level scheduling domain class (inheriting top-level class for each mandatory\ndomain characteristic).")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-3"}},[t._v("#")]),t._v(" add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"all-tasks-possible-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-tasks-possible-2"}},[t._v("#")]),t._v(" all_tasks_possible "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"all_tasks_possible",sig:{params:[{name:"self"},{name:"state",annotation:"State"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return a True is for each task there is at least one mode in which the task can be executed, given the\nresource configuration in the state provided as argument. Returns False otherwise.\nIf this function returns False, the scheduling problem is unsolvable from this state.\nThis is to cope with the use of non-renable resources that may lead to state from which a\ntask will not be possible anymore.")]),t._v(" "),a("h3",{attrs:{id:"check-if-action-can-be-started-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-if-action-can-be-started-2"}},[t._v("#")]),t._v(" check_if_action_can_be_started "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_if_action_can_be_started",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}],return:"Tuple[bool, Dict[str, int]]"}}}),t._v(" "),a("p",[t._v("Check if a start or resume action can be applied. It returns a boolean and a dictionary of resources to use.")]),t._v(" "),a("h3",{attrs:{id:"check-unique-resource-names-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names-2"}},[t._v("#")]),t._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),t._v(" "),a("h3",{attrs:{id:"check-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-9"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-149"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-230"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-230"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"find-one-ressource-to-do-one-task-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#find-one-ressource-to-do-one-task-2"}},[t._v("#")]),t._v(" find_one_ressource_to_do_one_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"find_one_ressource_to_do_one_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("For the common case when it is possible to do the task by one resource unit.\nFor general case, it might just return no possible ressource unit.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-13"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-231"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-231"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-all-condition-items-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-condition-items-2"}},[t._v("#")]),t._v(" get_all_condition_items "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_condition_items",sig:{params:[{name:"self"}],return:"Enum"}}}),t._v(" "),a("p",[t._v("Return an Enum with all the elements that can be used to define a condition.")]),t._v(" "),a("p",[t._v("Example:\nreturn\nConditionElementsExample(Enum):\nOK = 0\nNC_PART_1_OPERATION_1 = 1\nNC_PART_1_OPERATION_2 = 2\nNC_PART_2_OPERATION_1 = 3\nNC_PART_2_OPERATION_2 = 4\nHARDWARE_ISSUE_MACHINE_A = 5\nHARDWARE_ISSUE_MACHINE_B = 6")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-3"}},[t._v("#")]),t._v(" get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-3"}},[t._v("#")]),t._v(" get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-3"}},[t._v("#")]),t._v(" get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-9"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-150"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-232"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-232"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-3"}},[t._v("#")]),t._v(" get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-9"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-151"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-233"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-233"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-13"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-234"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-234"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-13"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-235"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-235"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-13"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-236"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-236"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon-3"}},[t._v("#")]),t._v(" get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-3"}},[t._v("#")]),t._v(" get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-6"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-152"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-237"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-237"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives-3"}},[t._v("#")]),t._v(" get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-9"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-153"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-238"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-238"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-9"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-154"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-239"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-239"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-13"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-240"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-240"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-3"}},[t._v("#")]),t._v(" get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-3"}},[t._v("#")]),t._v(" get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-3"}},[t._v("#")]),t._v(" get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-3"}},[t._v("#")]),t._v(" get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-3"}},[t._v("#")]),t._v(" get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-3"}},[t._v("#")]),t._v(" get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-3"}},[t._v("#")]),t._v(" get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-names-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-names-2"}},[t._v("#")]),t._v(" get_skills_names "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_names",sig:{params:[{name:"self"}],return:"Set[str]"}}}),t._v(" "),a("p",[t._v("Return a list of all skill names as a list of str. Skill names are defined in the 2 dictionaries returned\nby the get_all_resources_skills and get_all_tasks_skills functions.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-resource-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-resource-2"}},[t._v("#")]),t._v(" get_skills_of_resource "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skills of a given resource")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-task-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-task-2"}},[t._v("#")]),t._v(" get_skills_of_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skill requirements for a given task")]),t._v(" "),a("h3",{attrs:{id:"get-successors-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-3"}},[t._v("#")]),t._v(" get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-3"}},[t._v("#")]),t._v(" get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-on-completion-added-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-on-completion-added-conditions-2"}},[t._v("#")]),t._v(" get_task_on_completion_added_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_on_completion_added_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[Distribution]]"}}}),t._v(" "),a("p",[t._v("Return a dict of list. The key of the dict is the task id and each list is composed of a list of tuples.\nEach tuple contains the probability (first item in tuple) that the conditionElement (second item in tuple)\nis True. The probabilities in the inner list should sum up to 1. The dictionary should only contains the keys\nof tasks that can create conditions.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n12:\n[\nDiscreteDistribution([(ConditionElementsExample.NC_PART_1_OPERATION_1, 0.1), (ConditionElementsExample.OK, 0.9)]),\nDiscreteDistribution([(ConditionElementsExample.HARDWARE_ISSUE_MACHINE_A, 0.05), ('paper', 0.1), (ConditionElementsExample.OK, 0.95)])\n]\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-3"}},[t._v("#")]),t._v(" get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-3"}},[t._v("#")]),t._v(" get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-3"}},[t._v("#")]),t._v(" get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-241"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-241"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-3"}},[t._v("#")]),t._v(" get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-3"}},[t._v("#")]),t._v(" get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-242"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-242"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-3"}},[t._v("#")]),t._v(" get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-243"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-243"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-5"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-155"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-244"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-244"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-3"}},[t._v("#")]),t._v(" get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"initialize-domain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize-domain-2"}},[t._v("#")]),t._v(" initialize_domain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"initialize_domain",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Initialize a scheduling domain. This function needs to be called when instantiating a scheduling domain.")]),t._v(" "),a("h3",{attrs:{id:"is-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-9"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-156"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-245"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-245"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-9"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-157"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-246"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-246"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-9"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-158"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-247"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-247"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-9"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-159"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-248"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-248"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-9"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-160"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-249"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-249"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-5"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-161"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-250"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-250"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-7"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-251"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-251"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-9"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-252"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-252"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-9"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-162"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-253"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-253"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-3"}},[t._v("#")]),t._v(" sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-3"}},[t._v("#")]),t._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-3"}},[t._v("#")]),t._v(" sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample, store and return task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-inplace-environment-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-inplace-environment-2"}},[t._v("#")]),t._v(" set_inplace_environment "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_inplace_environment",sig:{params:[{name:"self"},{name:"inplace_environment",annotation:"bool"}]}}}),t._v(" "),a("p",[t._v("Activate or not the fact that the simulator modifies the given state inplace or create a copy before.\nThe inplace version is several times faster but will lead to bugs in graph search solver.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-9"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-163"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-5"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-164"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-254"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-254"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-9"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-165"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-255"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-255"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-2"}},[t._v("#")]),t._v(" update_complete_dummy_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly started tasks whose duration is 0 from ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-simulation-2"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-2"}},[t._v("#")]),t._v(" update_complete_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-simulation-2"}},[t._v("#")]),t._v(" update_complete_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_complete_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly completed tasks in the state from ongoing\nto complete, update resource availability and update on-completion conditions.\nThis function will also log in task_details the time it was complete.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-2"}},[t._v("#")]),t._v(" update_conditional_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-simulation-2"}},[t._v("#")]),t._v(" update_conditional_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update remaining tasks by checking conditions and potentially\nadding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_conditional_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-2"}},[t._v("#")]),t._v(" update_pause_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from ongoing to paused if specified in the action\nand update resource availability. This function will also log in task_details the time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-simulation-2"}},[t._v("#")]),t._v(" update_pause_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_pause_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-2"}},[t._v("#")]),t._v(" update_progress "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-simulation-2"}},[t._v("#")]),t._v(" update_progress_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-uncertain-2"}},[t._v("#")]),t._v(" update_progress_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-2"}},[t._v("#")]),t._v(" update_resource_availability "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-simulation-2"}},[t._v("#")]),t._v(" update_resource_availability_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update resource availability for next time step.\nThis should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-uncertain-2"}},[t._v("#")]),t._v(" update_resource_availability_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-2"}},[t._v("#")]),t._v(" update_resume_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from paused to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was resumed")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-simulation-2"}},[t._v("#")]),t._v(" update_resume_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulationn scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_resume_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-2"}},[t._v("#")]),t._v(" update_start_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from remaining to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-simulation-2"}},[t._v("#")]),t._v(" update_start_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of a task from remaining to ongoing if\nspecified in the action and update resource availability. This function will also log in task_details the\ntime it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_start_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from remaining to ongoing\nif specified in the action and update resource availability.\nThis function returns a DsicreteDistribution of State.\nThis function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-time-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-2"}},[t._v("#")]),t._v(" update_time "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-simulation-2"}},[t._v("#")]),t._v(" update_time_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the time of the state if the time_progress attribute of the\ngiven EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-uncertain-2"}},[t._v("#")]),t._v(" update_time_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-4"}},[t._v("#")]),t._v(" _add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"check-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-10"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-166"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-256"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-14"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-257"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-257"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-15"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-4"}},[t._v("#")]),t._v(" _get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-4"}},[t._v("#")]),t._v(" _get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-4"}},[t._v("#")]),t._v(" _get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-10"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-167"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-258"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-258"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-5"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Returns the action space from a state.\nTODO : think about a way to avoid the instaceof usage.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-4"}},[t._v("#")]),t._v(" _get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-10"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-168"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-259"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-259"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-5"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-169"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-260"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-260"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-14"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-261"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-261"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-15"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-262"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-262"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-14"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-263"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-263"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-15"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Create and return an empty initial state")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-14"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-264"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-264"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-15"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-265"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-265"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon-4"}},[t._v("#")]),t._v(" _get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-9"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-266"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-266"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-10"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-267"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-267"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-4"}},[t._v("#")]),t._v(" _get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-4"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with DeterministicTransitions. This function will be ignored\nif the domain is defined as having UncertainTransitions or Simulation.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-7"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with UncertainTransitions. This function will be ignored\nif the domain is defined as a Simulation. This function may also be used by uncertainty-specialised solvers\non deterministic domains.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives-4"}},[t._v("#")]),t._v(" _get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-10"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-170"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-268"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-268"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-10"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-171"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-269"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-269"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-14"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-270"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-270"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-15"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-4"}},[t._v("#")]),t._v(" _get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-4"}},[t._v("#")]),t._v(" _get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-4"}},[t._v("#")]),t._v(" _get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-4"}},[t._v("#")]),t._v(" _get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-4"}},[t._v("#")]),t._v(" _get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-4"}},[t._v("#")]),t._v(" _get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-4"}},[t._v("#")]),t._v(" _get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-successors-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-4"}},[t._v("#")]),t._v(" _get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-4"}},[t._v("#")]),t._v(" _get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-4"}},[t._v("#")]),t._v(" _get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-4"}},[t._v("#")]),t._v(" _get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-4"}},[t._v("#")]),t._v(" _get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-271"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-271"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-4"}},[t._v("#")]),t._v(" _get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-ids-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-ids-2"}},[t._v("#")]),t._v(" _get_tasks_ids "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_ids",sig:{params:[{name:"self"}],return:"Union[Set[int], Dict[int, Any], List[int]]"}}}),t._v(" "),a("p",[t._v("Return a set or dict of int = id of tasks")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-modes-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-modes-2"}},[t._v("#")]),t._v(" _get_tasks_modes "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_modes",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, ModeConsumption]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is a task id and the second key is a mode id.\nThe value is a Mode object defining the resource consumption.\nIf the domain is an instance of VariableResourceConsumption, VaryingModeConsumption objects should be used.\nIf this is not the case (i.e. the domain is an instance of ConstantResourceConsumption),\nthen ConstantModeConsumption should be used.")]),t._v(" "),a("p",[t._v("E.g. with constant resource consumption\n{\n12: {\n1: ConstantModeConsumption({'rt_1': 2, 'rt_2': 0, 'ru_1': 1}),\n2: ConstantModeConsumption({'rt_1': 0, 'rt_2': 3, 'ru_1': 1}),\n}\n}")]),t._v(" "),a("p",[t._v("E.g. with time varying resource consumption\n{\n12: {\n1: VaryingModeConsumption({'rt_1': [2,2,2,2,3], 'rt_2': [0,0,0,0,0], 'ru_1': [1,1,1,1,1]}),\n2: VaryingModeConsumption({'rt_1': [1,1,1,1,2,2,2], 'rt_2': [0,0,0,0,0,0,0], 'ru_1': [1,1,1,1,1,1,1]}),\n}\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-4"}},[t._v("#")]),t._v(" _get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-272"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-272"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-4"}},[t._v("#")]),t._v(" _get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-273"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-273"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-4"}},[t._v("#")]),t._v(" _get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"init-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-5"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-172"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-274"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-274"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-10"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-173"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-275"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-275"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-10"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-174"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-276"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-276"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-5"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-175"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-277"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-277"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-10"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-176"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-278"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-278"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-5"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-177"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-279"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-279"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-10"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-178"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-280"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-280"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-10"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-179"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-281"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-281"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-8"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-282"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-282"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-9"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-283"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-283"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-10"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-284"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-284"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-10"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-180"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-285"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-285"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-4"}},[t._v("#")]),t._v(" _sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-4"}},[t._v("#")]),t._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-4"}},[t._v("#")]),t._v(" _sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return a task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-10"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-181"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-5"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-286"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-286"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-5"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined as a Simulation (i.e. transitions are defined by call to\na simulation). This function may also be used by simulation-based solvers on non-Simulation domains.")]),t._v(" "),a("h3",{attrs:{id:"state-step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-5"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-182"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-287"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-287"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-10"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-183"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-288"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-288"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"deterministicschedulingdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicschedulingdomain"}},[t._v("#")]),t._v(" DeterministicSchedulingDomain")]),t._v(" "),a("p",[t._v("This is the highest level scheduling domain class (inheriting top-level class for each mandatory\ndomain characteristic).")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-5"}},[t._v("#")]),t._v(" add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"all-tasks-possible-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-tasks-possible-3"}},[t._v("#")]),t._v(" all_tasks_possible "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"all_tasks_possible",sig:{params:[{name:"self"},{name:"state",annotation:"State"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return a True is for each task there is at least one mode in which the task can be executed, given the\nresource configuration in the state provided as argument. Returns False otherwise.\nIf this function returns False, the scheduling problem is unsolvable from this state.\nThis is to cope with the use of non-renable resources that may lead to state from which a\ntask will not be possible anymore.")]),t._v(" "),a("h3",{attrs:{id:"check-if-action-can-be-started-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-if-action-can-be-started-3"}},[t._v("#")]),t._v(" check_if_action_can_be_started "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_if_action_can_be_started",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}],return:"Tuple[bool, Dict[str, int]]"}}}),t._v(" "),a("p",[t._v("Check if a start or resume action can be applied. It returns a boolean and a dictionary of resources to use.")]),t._v(" "),a("h3",{attrs:{id:"check-unique-resource-names-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names-3"}},[t._v("#")]),t._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),t._v(" "),a("h3",{attrs:{id:"check-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-11"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-184"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-289"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-289"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"find-one-ressource-to-do-one-task-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#find-one-ressource-to-do-one-task-3"}},[t._v("#")]),t._v(" find_one_ressource_to_do_one_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"find_one_ressource_to_do_one_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("For the common case when it is possible to do the task by one resource unit.\nFor general case, it might just return no possible ressource unit.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-16"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-290"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-290"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-all-condition-items-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-condition-items-3"}},[t._v("#")]),t._v(" get_all_condition_items "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_condition_items",sig:{params:[{name:"self"}],return:"Enum"}}}),t._v(" "),a("p",[t._v("Return an Enum with all the elements that can be used to define a condition.")]),t._v(" "),a("p",[t._v("Example:\nreturn\nConditionElementsExample(Enum):\nOK = 0\nNC_PART_1_OPERATION_1 = 1\nNC_PART_1_OPERATION_2 = 2\nNC_PART_2_OPERATION_1 = 3\nNC_PART_2_OPERATION_2 = 4\nHARDWARE_ISSUE_MACHINE_A = 5\nHARDWARE_ISSUE_MACHINE_B = 6")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-5"}},[t._v("#")]),t._v(" get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-5"}},[t._v("#")]),t._v(" get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-5"}},[t._v("#")]),t._v(" get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-11"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-185"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-291"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-291"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-5"}},[t._v("#")]),t._v(" get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-11"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-186"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-292"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-292"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-16"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-293"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-293"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-16"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-294"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-294"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-16"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-295"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-295"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon-5"}},[t._v("#")]),t._v(" get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-5"}},[t._v("#")]),t._v(" get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-5"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-187"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-296"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-296"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-8"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-188"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-297"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-297"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives-5"}},[t._v("#")]),t._v(" get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-11"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-189"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-298"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-298"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-11"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-190"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-299"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-299"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-16"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-300"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-300"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-5"}},[t._v("#")]),t._v(" get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-5"}},[t._v("#")]),t._v(" get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-5"}},[t._v("#")]),t._v(" get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-5"}},[t._v("#")]),t._v(" get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-5"}},[t._v("#")]),t._v(" get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-5"}},[t._v("#")]),t._v(" get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-5"}},[t._v("#")]),t._v(" get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-names-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-names-3"}},[t._v("#")]),t._v(" get_skills_names "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_names",sig:{params:[{name:"self"}],return:"Set[str]"}}}),t._v(" "),a("p",[t._v("Return a list of all skill names as a list of str. Skill names are defined in the 2 dictionaries returned\nby the get_all_resources_skills and get_all_tasks_skills functions.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-resource-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-resource-3"}},[t._v("#")]),t._v(" get_skills_of_resource "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skills of a given resource")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-task-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-task-3"}},[t._v("#")]),t._v(" get_skills_of_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skill requirements for a given task")]),t._v(" "),a("h3",{attrs:{id:"get-successors-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-5"}},[t._v("#")]),t._v(" get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-5"}},[t._v("#")]),t._v(" get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-on-completion-added-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-on-completion-added-conditions-3"}},[t._v("#")]),t._v(" get_task_on_completion_added_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_on_completion_added_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[Distribution]]"}}}),t._v(" "),a("p",[t._v("Return a dict of list. The key of the dict is the task id and each list is composed of a list of tuples.\nEach tuple contains the probability (first item in tuple) that the conditionElement (second item in tuple)\nis True. The probabilities in the inner list should sum up to 1. The dictionary should only contains the keys\nof tasks that can create conditions.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n12:\n[\nDiscreteDistribution([(ConditionElementsExample.NC_PART_1_OPERATION_1, 0.1), (ConditionElementsExample.OK, 0.9)]),\nDiscreteDistribution([(ConditionElementsExample.HARDWARE_ISSUE_MACHINE_A, 0.05), ('paper', 0.1), (ConditionElementsExample.OK, 0.95)])\n]\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-5"}},[t._v("#")]),t._v(" get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-5"}},[t._v("#")]),t._v(" get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-5"}},[t._v("#")]),t._v(" get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-301"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-301"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-5"}},[t._v("#")]),t._v(" get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-5"}},[t._v("#")]),t._v(" get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-302"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-302"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-5"}},[t._v("#")]),t._v(" get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-303"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-303"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-6"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-191"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-304"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-304"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-5"}},[t._v("#")]),t._v(" get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"initialize-domain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize-domain-3"}},[t._v("#")]),t._v(" initialize_domain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"initialize_domain",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Initialize a scheduling domain. This function needs to be called when instantiating a scheduling domain.")]),t._v(" "),a("h3",{attrs:{id:"is-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-11"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-192"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-305"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-305"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-11"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-193"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-306"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-306"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-11"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-194"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-307"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-307"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-11"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-195"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-308"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-308"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-11"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-196"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-309"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-309"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-6"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-197"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-310"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-310"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-10"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-311"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-311"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-11"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-312"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-312"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-11"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-198"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-313"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-313"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-5"}},[t._v("#")]),t._v(" sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-5"}},[t._v("#")]),t._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-5"}},[t._v("#")]),t._v(" sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample, store and return task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-inplace-environment-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-inplace-environment-3"}},[t._v("#")]),t._v(" set_inplace_environment "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_inplace_environment",sig:{params:[{name:"self"},{name:"inplace_environment",annotation:"bool"}]}}}),t._v(" "),a("p",[t._v("Activate or not the fact that the simulator modifies the given state inplace or create a copy before.\nThe inplace version is several times faster but will lead to bugs in graph search solver.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-11"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-199"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-6"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-200"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-314"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-314"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-11"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-201"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-315"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-315"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-3"}},[t._v("#")]),t._v(" update_complete_dummy_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly started tasks whose duration is 0 from ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-simulation-3"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-3"}},[t._v("#")]),t._v(" update_complete_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-simulation-3"}},[t._v("#")]),t._v(" update_complete_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_complete_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly completed tasks in the state from ongoing\nto complete, update resource availability and update on-completion conditions.\nThis function will also log in task_details the time it was complete.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-3"}},[t._v("#")]),t._v(" update_conditional_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-simulation-3"}},[t._v("#")]),t._v(" update_conditional_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update remaining tasks by checking conditions and potentially\nadding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_conditional_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-3"}},[t._v("#")]),t._v(" update_pause_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from ongoing to paused if specified in the action\nand update resource availability. This function will also log in task_details the time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-simulation-3"}},[t._v("#")]),t._v(" update_pause_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_pause_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-3"}},[t._v("#")]),t._v(" update_progress "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-simulation-3"}},[t._v("#")]),t._v(" update_progress_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-uncertain-3"}},[t._v("#")]),t._v(" update_progress_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-3"}},[t._v("#")]),t._v(" update_resource_availability "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-simulation-3"}},[t._v("#")]),t._v(" update_resource_availability_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update resource availability for next time step.\nThis should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-uncertain-3"}},[t._v("#")]),t._v(" update_resource_availability_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-3"}},[t._v("#")]),t._v(" update_resume_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from paused to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was resumed")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-simulation-3"}},[t._v("#")]),t._v(" update_resume_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulationn scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_resume_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-3"}},[t._v("#")]),t._v(" update_start_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from remaining to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-simulation-3"}},[t._v("#")]),t._v(" update_start_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of a task from remaining to ongoing if\nspecified in the action and update resource availability. This function will also log in task_details the\ntime it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_start_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from remaining to ongoing\nif specified in the action and update resource availability.\nThis function returns a DsicreteDistribution of State.\nThis function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-time-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-3"}},[t._v("#")]),t._v(" update_time "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-simulation-3"}},[t._v("#")]),t._v(" update_time_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the time of the state if the time_progress attribute of the\ngiven EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-uncertain-3"}},[t._v("#")]),t._v(" update_time_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-6"}},[t._v("#")]),t._v(" _add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"check-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-12"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-202"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-316"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-316"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-17"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-317"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-317"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-18"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-6"}},[t._v("#")]),t._v(" _get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-6"}},[t._v("#")]),t._v(" _get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-6"}},[t._v("#")]),t._v(" _get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-12"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-203"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-318"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-318"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-6"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Returns the action space from a state.\nTODO : think about a way to avoid the instaceof usage.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-6"}},[t._v("#")]),t._v(" _get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-12"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-204"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-319"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-319"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-6"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-205"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-205"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-320"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-320"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-17"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-321"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-321"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-18"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-322"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-322"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-17"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-323"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-323"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-18"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Create and return an empty initial state")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-17"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-324"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-324"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-18"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-325"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-325"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon-6"}},[t._v("#")]),t._v(" _get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-11"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-326"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-326"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-12"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-327"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-327"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-6"}},[t._v("#")]),t._v(" _get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-6"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with DeterministicTransitions. This function will be ignored\nif the domain is defined as having UncertainTransitions or Simulation.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-9"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with UncertainTransitions. This function will be ignored\nif the domain is defined as a Simulation. This function may also be used by uncertainty-specialised solvers\non deterministic domains.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives-6"}},[t._v("#")]),t._v(" _get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-12"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-206"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-206"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-328"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-328"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-12"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-207"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-207"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-329"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-329"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-17"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-330"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-330"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-18"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-6"}},[t._v("#")]),t._v(" _get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-6"}},[t._v("#")]),t._v(" _get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-6"}},[t._v("#")]),t._v(" _get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-6"}},[t._v("#")]),t._v(" _get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-6"}},[t._v("#")]),t._v(" _get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-6"}},[t._v("#")]),t._v(" _get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-6"}},[t._v("#")]),t._v(" _get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-successors-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-6"}},[t._v("#")]),t._v(" _get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-6"}},[t._v("#")]),t._v(" _get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-6"}},[t._v("#")]),t._v(" _get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-6"}},[t._v("#")]),t._v(" _get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-6"}},[t._v("#")]),t._v(" _get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-331"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-331"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-6"}},[t._v("#")]),t._v(" _get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-ids-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-ids-3"}},[t._v("#")]),t._v(" _get_tasks_ids "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_ids",sig:{params:[{name:"self"}],return:"Union[Set[int], Dict[int, Any], List[int]]"}}}),t._v(" "),a("p",[t._v("Return a set or dict of int = id of tasks")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-modes-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-modes-3"}},[t._v("#")]),t._v(" _get_tasks_modes "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_modes",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, ModeConsumption]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is a task id and the second key is a mode id.\nThe value is a Mode object defining the resource consumption.\nIf the domain is an instance of VariableResourceConsumption, VaryingModeConsumption objects should be used.\nIf this is not the case (i.e. the domain is an instance of ConstantResourceConsumption),\nthen ConstantModeConsumption should be used.")]),t._v(" "),a("p",[t._v("E.g. with constant resource consumption\n{\n12: {\n1: ConstantModeConsumption({'rt_1': 2, 'rt_2': 0, 'ru_1': 1}),\n2: ConstantModeConsumption({'rt_1': 0, 'rt_2': 3, 'ru_1': 1}),\n}\n}")]),t._v(" "),a("p",[t._v("E.g. with time varying resource consumption\n{\n12: {\n1: VaryingModeConsumption({'rt_1': [2,2,2,2,3], 'rt_2': [0,0,0,0,0], 'ru_1': [1,1,1,1,1]}),\n2: VaryingModeConsumption({'rt_1': [1,1,1,1,2,2,2], 'rt_2': [0,0,0,0,0,0,0], 'ru_1': [1,1,1,1,1,1,1]}),\n}\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-6"}},[t._v("#")]),t._v(" _get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-332"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-332"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-6"}},[t._v("#")]),t._v(" _get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-333"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-333"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-6"}},[t._v("#")]),t._v(" _get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"init-memory-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-6"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-208"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-208"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-334"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-334"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-12"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-209"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-209"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-335"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-335"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-12"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-210"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-210"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-336"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-336"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-6"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-211"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-211"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-337"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-337"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-12"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-212"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-212"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-338"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-338"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-6"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-213"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-213"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-339"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-339"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-12"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-214"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-214"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-340"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-340"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-12"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-215"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-215"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-341"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-341"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-11"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-342"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-342"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-12"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-343"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-343"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-12"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-344"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-344"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-12"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-216"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-216"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-345"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-345"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-6"}},[t._v("#")]),t._v(" _sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-6"}},[t._v("#")]),t._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-6"}},[t._v("#")]),t._v(" _sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return a task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-12"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-217"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-217"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-6"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-346"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-346"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-6"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined as a Simulation (i.e. transitions are defined by call to\na simulation). This function may also be used by simulation-based solvers on non-Simulation domains.")]),t._v(" "),a("h3",{attrs:{id:"state-step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-6"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-218"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-218"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-347"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-347"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-12"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-219"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-219"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-348"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-348"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")])],1)}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{555:function(t,e,a){"use strict";a.r(e);var s=a(38),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-scheduling-domains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-scheduling-domains"}},[t._v("#")]),t._v(" builders.domain.scheduling.scheduling_domains")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"schedulingobjectiveenum"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schedulingobjectiveenum"}},[t._v("#")]),t._v(" SchedulingObjectiveEnum")]),t._v(" "),a("p",[t._v("Enum defining the different scheduling objectives:")]),t._v(" "),a("ul",[a("li",[t._v("MAKESPAN: makespan (to be minimize)")]),t._v(" "),a("li",[t._v("COST: cost of resources (to be minimized)")])]),t._v(" "),a("h2",{attrs:{id:"d"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#d"}},[t._v("#")]),t._v(" D")]),t._v(" "),a("p",[t._v("Base class for any scheduling statefull domain")]),t._v(" "),a("h3",{attrs:{id:"check-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-2"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-2"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-3"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-2"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-2"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-2"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-3"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-2"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-3"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-2"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-3"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-2"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-2"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-2"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-2"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-3"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-2"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-2"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-2"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-2"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-2"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-2"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-52"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"schedulingdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schedulingdomain"}},[t._v("#")]),t._v(" SchedulingDomain")]),t._v(" "),a("p",[t._v("This is the highest level scheduling domain class (inheriting top-level class for each mandatory\ndomain characteristic).\nThis is where the implementation of the statefull scheduling domain is implemented,\nletting to the user the possibility\nto the user to define the scheduling problem without having to think of a statefull version.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions"}},[t._v("#")]),t._v(" add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"all-tasks-possible"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-tasks-possible"}},[t._v("#")]),t._v(" all_tasks_possible "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"all_tasks_possible",sig:{params:[{name:"self"},{name:"state",annotation:"State"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return a True is for each task there is at least one mode in which the task can be executed, given the\nresource configuration in the state provided as argument. Returns False otherwise.\nIf this function returns False, the scheduling problem is unsolvable from this state.\nThis is to cope with the use of non-renable resources that may lead to state from which a\ntask will not be possible anymore.")]),t._v(" "),a("h3",{attrs:{id:"check-if-action-can-be-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-if-action-can-be-started"}},[t._v("#")]),t._v(" check_if_action_can_be_started "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_if_action_can_be_started",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}],return:"Tuple[bool, Dict[str, int]]"}}}),t._v(" "),a("p",[t._v("Check if a start or resume action can be applied. It returns a boolean and a dictionary of resources to use.")]),t._v(" "),a("h3",{attrs:{id:"check-unique-resource-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names"}},[t._v("#")]),t._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),t._v(" "),a("h3",{attrs:{id:"check-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-3"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-53"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"find-one-ressource-to-do-one-task"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#find-one-ressource-to-do-one-task"}},[t._v("#")]),t._v(" find_one_ressource_to_do_one_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"find_one_ressource_to_do_one_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("For the common case when it is possible to do the task by one resource unit.\nFor general case, it might just return no possible ressource unit.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-4"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-54"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-all-condition-items"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-condition-items"}},[t._v("#")]),t._v(" get_all_condition_items "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_condition_items",sig:{params:[{name:"self"}],return:"Enum"}}}),t._v(" "),a("p",[t._v("Return an Enum with all the elements that can be used to define a condition.")]),t._v(" "),a("p",[t._v("Example:\nreturn\nConditionElementsExample(Enum):\nOK = 0\nNC_PART_1_OPERATION_1 = 1\nNC_PART_1_OPERATION_2 = 2\nNC_PART_2_OPERATION_1 = 3\nNC_PART_2_OPERATION_2 = 4\nHARDWARE_ISSUE_MACHINE_A = 5\nHARDWARE_ISSUE_MACHINE_B = 6")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills"}},[t._v("#")]),t._v(" get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills"}},[t._v("#")]),t._v(" get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks"}},[t._v("#")]),t._v(" get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-3"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-55"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks"}},[t._v("#")]),t._v(" get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-3"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-56"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-4"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-57"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-4"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-58"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-4"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-59"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon"}},[t._v("#")]),t._v(" get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs"}},[t._v("#")]),t._v(" get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives"}},[t._v("#")]),t._v(" get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-3"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-60"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-3"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-61"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-4"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-62"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations"}},[t._v("#")]),t._v(" get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors"}},[t._v("#")]),t._v(" get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit"}},[t._v("#")]),t._v(" get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability"}},[t._v("#")]),t._v(" get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit"}},[t._v("#")]),t._v(" get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names"}},[t._v("#")]),t._v(" get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names"}},[t._v("#")]),t._v(" get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-names"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-names"}},[t._v("#")]),t._v(" get_skills_names "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_names",sig:{params:[{name:"self"}],return:"Set[str]"}}}),t._v(" "),a("p",[t._v("Return a list of all skill names as a list of str. Skill names are defined in the 2 dictionaries returned\nby the get_all_resources_skills and get_all_tasks_skills functions.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-resource"}},[t._v("#")]),t._v(" get_skills_of_resource "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skills of a given resource")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-task"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-task"}},[t._v("#")]),t._v(" get_skills_of_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skill requirements for a given task")]),t._v(" "),a("h3",{attrs:{id:"get-successors"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors"}},[t._v("#")]),t._v(" get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions"}},[t._v("#")]),t._v(" get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-on-completion-added-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-on-completion-added-conditions"}},[t._v("#")]),t._v(" get_task_on_completion_added_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_on_completion_added_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[Distribution]]"}}}),t._v(" "),a("p",[t._v("Return a dict of list. The key of the dict is the task id and each list is composed of a list of tuples.\nEach tuple contains the probability (first item in tuple) that the conditionElement (second item in tuple)\nis True. The probabilities in the inner list should sum up to 1. The dictionary should only contains the keys\nof tasks that can create conditions.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n12:\n[\nDiscreteDistribution([(ConditionElementsExample.NC_PART_1_OPERATION_1, 0.1), (ConditionElementsExample.OK, 0.9)]),\nDiscreteDistribution([(ConditionElementsExample.HARDWARE_ISSUE_MACHINE_A, 0.05), ('paper', 0.1), (ConditionElementsExample.OK, 0.95)])\n]\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned"}},[t._v("#")]),t._v(" get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity"}},[t._v("#")]),t._v(" get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress"}},[t._v("#")]),t._v(" get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-63"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type"}},[t._v("#")]),t._v(" get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags"}},[t._v("#")]),t._v(" get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-64"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window"}},[t._v("#")]),t._v(" get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-65"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption"}},[t._v("#")]),t._v(" get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"initialize-domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize-domain"}},[t._v("#")]),t._v(" initialize_domain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"initialize_domain",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Initialize a scheduling domain. This function needs to be called when instantiating a scheduling domain.")]),t._v(" "),a("h3",{attrs:{id:"is-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-3"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-66"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-3"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-67"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-3"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-68"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-3"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-69"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-3"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-70"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-3"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-71"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-72"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions"}},[t._v("#")]),t._v(" sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource"}},[t._v("#")]),t._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration"}},[t._v("#")]),t._v(" sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample, store and return task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-inplace-environment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-inplace-environment"}},[t._v("#")]),t._v(" set_inplace_environment "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_inplace_environment",sig:{params:[{name:"self"},{name:"inplace_environment",annotation:"bool"}]}}}),t._v(" "),a("p",[t._v("Activate or not the fact that the simulator modifies the given state inplace or create a copy before.\nThe inplace version is several times faster but will lead to bugs in graph search solver.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-3"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-2"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-73"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-74"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks"}},[t._v("#")]),t._v(" update_complete_dummy_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly started tasks whose duration is 0 from ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-simulation"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-uncertain"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks"}},[t._v("#")]),t._v(" update_complete_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-simulation"}},[t._v("#")]),t._v(" update_complete_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-uncertain"}},[t._v("#")]),t._v(" update_complete_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly completed tasks in the state from ongoing\nto complete, update resource availability and update on-completion conditions.\nThis function will also log in task_details the time it was complete.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks"}},[t._v("#")]),t._v(" update_conditional_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-simulation"}},[t._v("#")]),t._v(" update_conditional_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update remaining tasks by checking conditions and potentially\nadding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-uncertain"}},[t._v("#")]),t._v(" update_conditional_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks"}},[t._v("#")]),t._v(" update_pause_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from ongoing to paused if specified in the action\nand update resource availability. This function will also log in task_details the time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-simulation"}},[t._v("#")]),t._v(" update_pause_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-uncertain"}},[t._v("#")]),t._v(" update_pause_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-progress"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress"}},[t._v("#")]),t._v(" update_progress "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-simulation"}},[t._v("#")]),t._v(" update_progress_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-uncertain"}},[t._v("#")]),t._v(" update_progress_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability"}},[t._v("#")]),t._v(" update_resource_availability "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-simulation"}},[t._v("#")]),t._v(" update_resource_availability_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update resource availability for next time step.\nThis should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-uncertain"}},[t._v("#")]),t._v(" update_resource_availability_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks"}},[t._v("#")]),t._v(" update_resume_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from paused to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was resumed")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-simulation"}},[t._v("#")]),t._v(" update_resume_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulationn scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-uncertain"}},[t._v("#")]),t._v(" update_resume_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks"}},[t._v("#")]),t._v(" update_start_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from remaining to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-simulation"}},[t._v("#")]),t._v(" update_start_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of a task from remaining to ongoing if\nspecified in the action and update resource availability. This function will also log in task_details the\ntime it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-uncertain"}},[t._v("#")]),t._v(" update_start_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from remaining to ongoing\nif specified in the action and update resource availability.\nThis function returns a DsicreteDistribution of State.\nThis function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-time"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time"}},[t._v("#")]),t._v(" update_time "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-simulation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-simulation"}},[t._v("#")]),t._v(" update_time_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the time of the state if the time_progress attribute of the\ngiven EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-uncertain"}},[t._v("#")]),t._v(" update_time_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-2"}},[t._v("#")]),t._v(" _add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"check-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-4"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-75"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-5"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-76"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-6"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-2"}},[t._v("#")]),t._v(" _get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-2"}},[t._v("#")]),t._v(" _get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-2"}},[t._v("#")]),t._v(" _get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-4"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-77"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-2"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Returns the action space from a state.\nTODO : think about a way to avoid the instaceof usage.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-2"}},[t._v("#")]),t._v(" _get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-4"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-78"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-2"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-79"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-5"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-80"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-6"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-81"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-5"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-82"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-6"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Create and return an empty initial state")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-5"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-83"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-6"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-84"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon-2"}},[t._v("#")]),t._v(" _get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-3"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-85"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-4"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-86"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-2"}},[t._v("#")]),t._v(" _get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with DeterministicTransitions. This function will be ignored\nif the domain is defined as having UncertainTransitions or Simulation.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with UncertainTransitions. This function will be ignored\nif the domain is defined as a Simulation. This function may also be used by uncertainty-specialised solvers\non deterministic domains.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives-2"}},[t._v("#")]),t._v(" _get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-4"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-53"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-87"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-4"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-54"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-88"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-5"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-89"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-6"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-2"}},[t._v("#")]),t._v(" _get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-2"}},[t._v("#")]),t._v(" _get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-2"}},[t._v("#")]),t._v(" _get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-2"}},[t._v("#")]),t._v(" _get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-2"}},[t._v("#")]),t._v(" _get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-2"}},[t._v("#")]),t._v(" _get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-2"}},[t._v("#")]),t._v(" _get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-successors-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-2"}},[t._v("#")]),t._v(" _get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-2"}},[t._v("#")]),t._v(" _get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-2"}},[t._v("#")]),t._v(" _get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-2"}},[t._v("#")]),t._v(" _get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-2"}},[t._v("#")]),t._v(" _get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-90"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-2"}},[t._v("#")]),t._v(" _get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-ids"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-ids"}},[t._v("#")]),t._v(" _get_tasks_ids "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_ids",sig:{params:[{name:"self"}],return:"Union[Set[int], Dict[int, Any], List[int]]"}}}),t._v(" "),a("p",[t._v("Return a set or dict of int = id of tasks")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-modes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-modes"}},[t._v("#")]),t._v(" _get_tasks_modes "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_modes",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, ModeConsumption]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is a task id and the second key is a mode id.\nThe value is a Mode object defining the resource consumption.\nIf the domain is an instance of VariableResourceConsumption, VaryingModeConsumption objects should be used.\nIf this is not the case (i.e. the domain is an instance of ConstantResourceConsumption),\nthen ConstantModeConsumption should be used.")]),t._v(" "),a("p",[t._v("E.g. with constant resource consumption\n{\n12: {\n1: ConstantModeConsumption({'rt_1': 2, 'rt_2': 0, 'ru_1': 1}),\n2: ConstantModeConsumption({'rt_1': 0, 'rt_2': 3, 'ru_1': 1}),\n}\n}")]),t._v(" "),a("p",[t._v("E.g. with time varying resource consumption\n{\n12: {\n1: VaryingModeConsumption({'rt_1': [2,2,2,2,3], 'rt_2': [0,0,0,0,0], 'ru_1': [1,1,1,1,1]}),\n2: VaryingModeConsumption({'rt_1': [1,1,1,1,2,2,2], 'rt_2': [0,0,0,0,0,0,0], 'ru_1': [1,1,1,1,1,1,1]}),\n}\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-2"}},[t._v("#")]),t._v(" _get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-91"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-2"}},[t._v("#")]),t._v(" _get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-92"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-2"}},[t._v("#")]),t._v(" _get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"init-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-2"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-55"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-93"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-4"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-56"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-94"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-4"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-57"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-95"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-2"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-58"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-96"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-4"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-59"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-97"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-2"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-60"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-98"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-4"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-61"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-99"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-4"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-62"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-100"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-4"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-101"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-63"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-102"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-2"}},[t._v("#")]),t._v(" _sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-2"}},[t._v("#")]),t._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-2"}},[t._v("#")]),t._v(" _sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return a task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-4"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-64"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-2"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-103"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-2"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined as a Simulation (i.e. transitions are defined by call to\na simulation). This function may also be used by simulation-based solvers on non-Simulation domains.")]),t._v(" "),a("h3",{attrs:{id:"state-step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-2"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-65"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-104"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-66"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-105"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"d-det"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#d-det"}},[t._v("#")]),t._v(" D_det")]),t._v(" "),a("p",[t._v("Base class for deterministic scheduling problems")]),t._v(" "),a("h3",{attrs:{id:"check-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-5"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-67"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-106"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-7"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-107"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-5"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-68"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-108"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-5"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-69"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-109"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-7"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-110"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-7"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-111"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-7"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-112"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-2"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-70"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-113"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-2"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-71"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-114"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-5"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-72"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-115"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-5"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-73"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-116"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-7"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-117"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-74"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-118"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-5"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-75"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-119"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-5"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-76"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-120"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-5"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-77"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-121"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-5"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-78"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-122"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-5"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-79"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-123"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-80"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-124"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-125"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-5"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-126"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-5"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-81"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-127"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-5"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-82"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-3"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-83"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-128"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-84"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-129"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-6"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-85"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-130"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-8"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-131"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-9"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-132"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-6"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-86"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-133"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-3"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-87"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-134"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-6"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-88"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-135"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-3"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-89"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-136"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-8"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-137"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-9"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-138"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-8"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-139"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-9"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-140"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-8"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-141"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-9"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-142"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-5"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-143"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-6"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-144"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-3"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-90"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-145"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-3"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"SingleValueDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-91"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-146"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-6"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-92"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-147"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-6"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-93"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-148"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-8"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-149"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-9"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-150"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-2"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-94"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-151"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-3"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-95"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-152"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-6"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-96"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-153"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-6"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-97"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-154"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-3"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-98"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-155"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-6"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-99"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-156"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-3"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-100"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-157"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-6"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-101"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-158"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-6"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-102"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-159"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-2"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-103"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-160"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-2"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-161"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-3"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-162"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-6"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-163"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-6"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-104"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-164"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-6"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-105"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-3"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-165"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-3"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-106"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-166"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-3"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-107"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-167"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-6"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-108"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-168"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"d-uncertain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#d-uncertain"}},[t._v("#")]),t._v(" D_uncertain")]),t._v(" "),a("p",[t._v("Base class for uncertain scheduling problems where we can compute distributions")]),t._v(" "),a("h3",{attrs:{id:"check-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-7"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-109"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-169"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-10"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-170"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-7"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-110"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-171"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-7"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-111"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-172"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-10"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-173"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-10"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-174"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-10"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-175"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-4"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-112"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-176"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-7"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-113"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-177"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-7"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-114"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-178"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-10"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-179"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-3"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-115"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-180"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-7"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-116"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-181"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-7"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-117"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-182"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-7"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-118"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-183"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-7"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-119"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-184"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-7"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-120"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-185"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-3"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-121"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-186"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-4"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-187"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-7"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-188"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-7"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-122"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-189"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-7"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-123"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-4"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-124"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-190"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-7"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-125"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-191"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-8"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-126"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-192"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-11"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-193"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-12"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-194"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-8"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-127"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-195"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-4"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-128"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-196"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-8"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-129"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-197"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-4"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-130"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-198"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-11"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-199"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-12"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-200"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-11"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-201"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-12"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-202"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-11"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-203"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-12"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-204"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-7"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-205"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-205"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-8"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-206"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-206"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-5"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-131"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-207"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-207"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-8"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-132"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-208"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-208"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-8"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-133"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-209"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-209"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-11"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-210"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-210"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-12"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-211"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-211"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-4"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-134"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-212"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-212"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-4"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-135"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-213"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-213"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-8"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-136"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-214"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-214"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-8"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-137"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-215"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-215"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-4"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-138"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-216"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-216"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-8"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-139"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-217"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-217"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-4"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-140"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-218"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-218"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-8"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-141"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-219"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-219"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-8"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-142"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-220"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-220"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-4"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-143"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-221"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-221"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-5"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-222"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-222"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-6"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-223"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-223"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-8"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-224"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-224"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-8"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-144"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-225"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-225"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-8"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-145"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-4"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-226"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-226"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-4"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-146"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-227"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-227"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-4"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-147"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-228"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-228"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-8"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-148"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-229"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-229"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"uncertainschedulingdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uncertainschedulingdomain"}},[t._v("#")]),t._v(" UncertainSchedulingDomain")]),t._v(" "),a("p",[t._v("This is the highest level scheduling domain class (inheriting top-level class for each mandatory\ndomain characteristic).")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-3"}},[t._v("#")]),t._v(" add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"all-tasks-possible-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-tasks-possible-2"}},[t._v("#")]),t._v(" all_tasks_possible "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"all_tasks_possible",sig:{params:[{name:"self"},{name:"state",annotation:"State"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return a True is for each task there is at least one mode in which the task can be executed, given the\nresource configuration in the state provided as argument. Returns False otherwise.\nIf this function returns False, the scheduling problem is unsolvable from this state.\nThis is to cope with the use of non-renable resources that may lead to state from which a\ntask will not be possible anymore.")]),t._v(" "),a("h3",{attrs:{id:"check-if-action-can-be-started-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-if-action-can-be-started-2"}},[t._v("#")]),t._v(" check_if_action_can_be_started "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_if_action_can_be_started",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}],return:"Tuple[bool, Dict[str, int]]"}}}),t._v(" "),a("p",[t._v("Check if a start or resume action can be applied. It returns a boolean and a dictionary of resources to use.")]),t._v(" "),a("h3",{attrs:{id:"check-unique-resource-names-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names-2"}},[t._v("#")]),t._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),t._v(" "),a("h3",{attrs:{id:"check-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-9"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-149"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-230"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-230"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"find-one-ressource-to-do-one-task-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#find-one-ressource-to-do-one-task-2"}},[t._v("#")]),t._v(" find_one_ressource_to_do_one_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"find_one_ressource_to_do_one_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("For the common case when it is possible to do the task by one resource unit.\nFor general case, it might just return no possible ressource unit.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-13"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-231"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-231"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-all-condition-items-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-condition-items-2"}},[t._v("#")]),t._v(" get_all_condition_items "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_condition_items",sig:{params:[{name:"self"}],return:"Enum"}}}),t._v(" "),a("p",[t._v("Return an Enum with all the elements that can be used to define a condition.")]),t._v(" "),a("p",[t._v("Example:\nreturn\nConditionElementsExample(Enum):\nOK = 0\nNC_PART_1_OPERATION_1 = 1\nNC_PART_1_OPERATION_2 = 2\nNC_PART_2_OPERATION_1 = 3\nNC_PART_2_OPERATION_2 = 4\nHARDWARE_ISSUE_MACHINE_A = 5\nHARDWARE_ISSUE_MACHINE_B = 6")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-3"}},[t._v("#")]),t._v(" get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-3"}},[t._v("#")]),t._v(" get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-3"}},[t._v("#")]),t._v(" get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-9"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-150"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-232"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-232"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-3"}},[t._v("#")]),t._v(" get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-9"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-151"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-233"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-233"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-13"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-234"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-234"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-13"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-235"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-235"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-13"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-236"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-236"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon-3"}},[t._v("#")]),t._v(" get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-3"}},[t._v("#")]),t._v(" get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-6"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-152"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-237"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-237"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives-3"}},[t._v("#")]),t._v(" get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-9"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-153"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-238"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-238"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-9"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-154"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-239"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-239"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-13"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-240"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-240"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-3"}},[t._v("#")]),t._v(" get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-3"}},[t._v("#")]),t._v(" get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-3"}},[t._v("#")]),t._v(" get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-3"}},[t._v("#")]),t._v(" get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-3"}},[t._v("#")]),t._v(" get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-3"}},[t._v("#")]),t._v(" get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-3"}},[t._v("#")]),t._v(" get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-names-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-names-2"}},[t._v("#")]),t._v(" get_skills_names "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_names",sig:{params:[{name:"self"}],return:"Set[str]"}}}),t._v(" "),a("p",[t._v("Return a list of all skill names as a list of str. Skill names are defined in the 2 dictionaries returned\nby the get_all_resources_skills and get_all_tasks_skills functions.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-resource-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-resource-2"}},[t._v("#")]),t._v(" get_skills_of_resource "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skills of a given resource")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-task-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-task-2"}},[t._v("#")]),t._v(" get_skills_of_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skill requirements for a given task")]),t._v(" "),a("h3",{attrs:{id:"get-successors-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-3"}},[t._v("#")]),t._v(" get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-3"}},[t._v("#")]),t._v(" get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-on-completion-added-conditions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-on-completion-added-conditions-2"}},[t._v("#")]),t._v(" get_task_on_completion_added_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_on_completion_added_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[Distribution]]"}}}),t._v(" "),a("p",[t._v("Return a dict of list. The key of the dict is the task id and each list is composed of a list of tuples.\nEach tuple contains the probability (first item in tuple) that the conditionElement (second item in tuple)\nis True. The probabilities in the inner list should sum up to 1. The dictionary should only contains the keys\nof tasks that can create conditions.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n12:\n[\nDiscreteDistribution([(ConditionElementsExample.NC_PART_1_OPERATION_1, 0.1), (ConditionElementsExample.OK, 0.9)]),\nDiscreteDistribution([(ConditionElementsExample.HARDWARE_ISSUE_MACHINE_A, 0.05), ('paper', 0.1), (ConditionElementsExample.OK, 0.95)])\n]\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-3"}},[t._v("#")]),t._v(" get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-3"}},[t._v("#")]),t._v(" get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-3"}},[t._v("#")]),t._v(" get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-241"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-241"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-3"}},[t._v("#")]),t._v(" get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-3"}},[t._v("#")]),t._v(" get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-242"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-242"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-3"}},[t._v("#")]),t._v(" get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-243"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-243"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-5"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-155"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-244"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-244"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-3"}},[t._v("#")]),t._v(" get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"initialize-domain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize-domain-2"}},[t._v("#")]),t._v(" initialize_domain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"initialize_domain",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Initialize a scheduling domain. This function needs to be called when instantiating a scheduling domain.")]),t._v(" "),a("h3",{attrs:{id:"is-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-9"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-156"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-245"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-245"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-9"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-157"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-246"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-246"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-9"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-158"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-247"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-247"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-9"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-159"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-248"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-248"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-9"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-160"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-249"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-249"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-5"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-161"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-250"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-250"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-7"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-251"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-251"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-9"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-252"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-252"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-9"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-162"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-253"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-253"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-3"}},[t._v("#")]),t._v(" sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-3"}},[t._v("#")]),t._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-3"}},[t._v("#")]),t._v(" sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample, store and return task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-inplace-environment-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-inplace-environment-2"}},[t._v("#")]),t._v(" set_inplace_environment "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_inplace_environment",sig:{params:[{name:"self"},{name:"inplace_environment",annotation:"bool"}]}}}),t._v(" "),a("p",[t._v("Activate or not the fact that the simulator modifies the given state inplace or create a copy before.\nThe inplace version is several times faster but will lead to bugs in graph search solver.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-9"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-163"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-5"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-164"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-254"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-254"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-9"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-165"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-255"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-255"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-2"}},[t._v("#")]),t._v(" update_complete_dummy_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly started tasks whose duration is 0 from ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-simulation-2"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-2"}},[t._v("#")]),t._v(" update_complete_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-simulation-2"}},[t._v("#")]),t._v(" update_complete_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_complete_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly completed tasks in the state from ongoing\nto complete, update resource availability and update on-completion conditions.\nThis function will also log in task_details the time it was complete.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-2"}},[t._v("#")]),t._v(" update_conditional_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-simulation-2"}},[t._v("#")]),t._v(" update_conditional_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update remaining tasks by checking conditions and potentially\nadding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_conditional_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-2"}},[t._v("#")]),t._v(" update_pause_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from ongoing to paused if specified in the action\nand update resource availability. This function will also log in task_details the time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-simulation-2"}},[t._v("#")]),t._v(" update_pause_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_pause_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-2"}},[t._v("#")]),t._v(" update_progress "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-simulation-2"}},[t._v("#")]),t._v(" update_progress_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-uncertain-2"}},[t._v("#")]),t._v(" update_progress_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-2"}},[t._v("#")]),t._v(" update_resource_availability "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-simulation-2"}},[t._v("#")]),t._v(" update_resource_availability_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update resource availability for next time step.\nThis should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-uncertain-2"}},[t._v("#")]),t._v(" update_resource_availability_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-2"}},[t._v("#")]),t._v(" update_resume_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from paused to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was resumed")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-simulation-2"}},[t._v("#")]),t._v(" update_resume_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulationn scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_resume_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-2"}},[t._v("#")]),t._v(" update_start_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from remaining to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-simulation-2"}},[t._v("#")]),t._v(" update_start_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of a task from remaining to ongoing if\nspecified in the action and update resource availability. This function will also log in task_details the\ntime it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-uncertain-2"}},[t._v("#")]),t._v(" update_start_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from remaining to ongoing\nif specified in the action and update resource availability.\nThis function returns a DsicreteDistribution of State.\nThis function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-time-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-2"}},[t._v("#")]),t._v(" update_time "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-simulation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-simulation-2"}},[t._v("#")]),t._v(" update_time_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the time of the state if the time_progress attribute of the\ngiven EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-uncertain-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-uncertain-2"}},[t._v("#")]),t._v(" update_time_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-4"}},[t._v("#")]),t._v(" _add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"check-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-10"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-166"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-256"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-14"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-257"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-257"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-15"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-4"}},[t._v("#")]),t._v(" _get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-4"}},[t._v("#")]),t._v(" _get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-4"}},[t._v("#")]),t._v(" _get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-10"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-167"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-258"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-258"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-5"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Returns the action space from a state.\nTODO : think about a way to avoid the instaceof usage.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-4"}},[t._v("#")]),t._v(" _get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-10"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-168"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-259"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-259"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-5"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-169"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-260"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-260"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-14"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-261"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-261"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-15"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-262"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-262"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-14"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-263"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-263"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-15"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Create and return an empty initial state")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-14"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-264"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-264"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-15"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-265"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-265"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon-4"}},[t._v("#")]),t._v(" _get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-9"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-266"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-266"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-10"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-267"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-267"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-4"}},[t._v("#")]),t._v(" _get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-4"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with DeterministicTransitions. This function will be ignored\nif the domain is defined as having UncertainTransitions or Simulation.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-7"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with UncertainTransitions. This function will be ignored\nif the domain is defined as a Simulation. This function may also be used by uncertainty-specialised solvers\non deterministic domains.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives-4"}},[t._v("#")]),t._v(" _get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-10"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-170"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-268"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-268"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-10"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-171"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-269"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-269"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-14"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-270"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-270"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-15"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-4"}},[t._v("#")]),t._v(" _get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-4"}},[t._v("#")]),t._v(" _get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-4"}},[t._v("#")]),t._v(" _get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-4"}},[t._v("#")]),t._v(" _get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-4"}},[t._v("#")]),t._v(" _get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-4"}},[t._v("#")]),t._v(" _get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-4"}},[t._v("#")]),t._v(" _get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-successors-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-4"}},[t._v("#")]),t._v(" _get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-4"}},[t._v("#")]),t._v(" _get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-4"}},[t._v("#")]),t._v(" _get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-4"}},[t._v("#")]),t._v(" _get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-4"}},[t._v("#")]),t._v(" _get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-271"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-271"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-4"}},[t._v("#")]),t._v(" _get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-ids-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-ids-2"}},[t._v("#")]),t._v(" _get_tasks_ids "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_ids",sig:{params:[{name:"self"}],return:"Union[Set[int], Dict[int, Any], List[int]]"}}}),t._v(" "),a("p",[t._v("Return a set or dict of int = id of tasks")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-modes-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-modes-2"}},[t._v("#")]),t._v(" _get_tasks_modes "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_modes",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, ModeConsumption]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is a task id and the second key is a mode id.\nThe value is a Mode object defining the resource consumption.\nIf the domain is an instance of VariableResourceConsumption, VaryingModeConsumption objects should be used.\nIf this is not the case (i.e. the domain is an instance of ConstantResourceConsumption),\nthen ConstantModeConsumption should be used.")]),t._v(" "),a("p",[t._v("E.g. with constant resource consumption\n{\n12: {\n1: ConstantModeConsumption({'rt_1': 2, 'rt_2': 0, 'ru_1': 1}),\n2: ConstantModeConsumption({'rt_1': 0, 'rt_2': 3, 'ru_1': 1}),\n}\n}")]),t._v(" "),a("p",[t._v("E.g. with time varying resource consumption\n{\n12: {\n1: VaryingModeConsumption({'rt_1': [2,2,2,2,3], 'rt_2': [0,0,0,0,0], 'ru_1': [1,1,1,1,1]}),\n2: VaryingModeConsumption({'rt_1': [1,1,1,1,2,2,2], 'rt_2': [0,0,0,0,0,0,0], 'ru_1': [1,1,1,1,1,1,1]}),\n}\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-4"}},[t._v("#")]),t._v(" _get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-272"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-272"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-4"}},[t._v("#")]),t._v(" _get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-273"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-273"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-4"}},[t._v("#")]),t._v(" _get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"init-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-5"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-172"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-274"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-274"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-10"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-173"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-275"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-275"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-10"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-174"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-276"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-276"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-5"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-175"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-277"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-277"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-10"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-176"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-278"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-278"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-5"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-177"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-279"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-279"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-10"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-178"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-280"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-280"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-10"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-179"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-281"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-281"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-8"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-282"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-282"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-9"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-283"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-283"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-10"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-284"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-284"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-10"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-180"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-285"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-285"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-4"}},[t._v("#")]),t._v(" _sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-4"}},[t._v("#")]),t._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-4"}},[t._v("#")]),t._v(" _sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return a task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-10"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-181"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-5"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-286"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-286"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-5"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined as a Simulation (i.e. transitions are defined by call to\na simulation). This function may also be used by simulation-based solvers on non-Simulation domains.")]),t._v(" "),a("h3",{attrs:{id:"state-step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-5"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-182"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-287"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-287"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-10"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-183"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-288"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-288"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"deterministicschedulingdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicschedulingdomain"}},[t._v("#")]),t._v(" DeterministicSchedulingDomain")]),t._v(" "),a("p",[t._v("This is the highest level scheduling domain class (inheriting top-level class for each mandatory\ndomain characteristic).")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-5"}},[t._v("#")]),t._v(" add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"all-tasks-possible-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#all-tasks-possible-3"}},[t._v("#")]),t._v(" all_tasks_possible "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"all_tasks_possible",sig:{params:[{name:"self"},{name:"state",annotation:"State"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return a True is for each task there is at least one mode in which the task can be executed, given the\nresource configuration in the state provided as argument. Returns False otherwise.\nIf this function returns False, the scheduling problem is unsolvable from this state.\nThis is to cope with the use of non-renable resources that may lead to state from which a\ntask will not be possible anymore.")]),t._v(" "),a("h3",{attrs:{id:"check-if-action-can-be-started-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-if-action-can-be-started-3"}},[t._v("#")]),t._v(" check_if_action_can_be_started "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_if_action_can_be_started",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}],return:"Tuple[bool, Dict[str, int]]"}}}),t._v(" "),a("p",[t._v("Check if a start or resume action can be applied. It returns a boolean and a dictionary of resources to use.")]),t._v(" "),a("h3",{attrs:{id:"check-unique-resource-names-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-unique-resource-names-3"}},[t._v("#")]),t._v(" check_unique_resource_names "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_unique_resource_names",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return True if there are no duplicates in resource names across both resource types\nand resource units name lists.")]),t._v(" "),a("h3",{attrs:{id:"check-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-11"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-184"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-289"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-289"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"find-one-ressource-to-do-one-task-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#find-one-ressource-to-do-one-task-3"}},[t._v("#")]),t._v(" find_one_ressource_to_do_one_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"find_one_ressource_to_do_one_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("For the common case when it is possible to do the task by one resource unit.\nFor general case, it might just return no possible ressource unit.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-16"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-290"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-290"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-all-condition-items-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-condition-items-3"}},[t._v("#")]),t._v(" get_all_condition_items "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_condition_items",sig:{params:[{name:"self"}],return:"Enum"}}}),t._v(" "),a("p",[t._v("Return an Enum with all the elements that can be used to define a condition.")]),t._v(" "),a("p",[t._v("Example:\nreturn\nConditionElementsExample(Enum):\nOK = 0\nNC_PART_1_OPERATION_1 = 1\nNC_PART_1_OPERATION_2 = 2\nNC_PART_2_OPERATION_1 = 3\nNC_PART_2_OPERATION_2 = 4\nHARDWARE_ISSUE_MACHINE_A = 5\nHARDWARE_ISSUE_MACHINE_B = 6")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-5"}},[t._v("#")]),t._v(" get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-5"}},[t._v("#")]),t._v(" get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-5"}},[t._v("#")]),t._v(" get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-11"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-185"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-291"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-291"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-5"}},[t._v("#")]),t._v(" get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-11"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-186"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-292"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-292"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-16"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-293"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-293"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-16"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-294"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-294"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-16"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-295"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-295"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon-5"}},[t._v("#")]),t._v(" get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-5"}},[t._v("#")]),t._v(" get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-5"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-187"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-296"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-296"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-8"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-188"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-297"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-297"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives-5"}},[t._v("#")]),t._v(" get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-11"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-189"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-298"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-298"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-11"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-190"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-299"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-299"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-16"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-300"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-300"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-5"}},[t._v("#")]),t._v(" get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-5"}},[t._v("#")]),t._v(" get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-5"}},[t._v("#")]),t._v(" get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-5"}},[t._v("#")]),t._v(" get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-5"}},[t._v("#")]),t._v(" get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-5"}},[t._v("#")]),t._v(" get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-5"}},[t._v("#")]),t._v(" get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-names-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-names-3"}},[t._v("#")]),t._v(" get_skills_names "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_names",sig:{params:[{name:"self"}],return:"Set[str]"}}}),t._v(" "),a("p",[t._v("Return a list of all skill names as a list of str. Skill names are defined in the 2 dictionaries returned\nby the get_all_resources_skills and get_all_tasks_skills functions.")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-resource-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-resource-3"}},[t._v("#")]),t._v(" get_skills_of_resource "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skills of a given resource")]),t._v(" "),a("h3",{attrs:{id:"get-skills-of-task-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-task-3"}},[t._v("#")]),t._v(" get_skills_of_task "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_skills_of_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"Dict[str, Any]"}}}),t._v(" "),a("p",[t._v("Return the skill requirements for a given task")]),t._v(" "),a("h3",{attrs:{id:"get-successors-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-5"}},[t._v("#")]),t._v(" get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-5"}},[t._v("#")]),t._v(" get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-on-completion-added-conditions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-on-completion-added-conditions-3"}},[t._v("#")]),t._v(" get_task_on_completion_added_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_on_completion_added_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[Distribution]]"}}}),t._v(" "),a("p",[t._v("Return a dict of list. The key of the dict is the task id and each list is composed of a list of tuples.\nEach tuple contains the probability (first item in tuple) that the conditionElement (second item in tuple)\nis True. The probabilities in the inner list should sum up to 1. The dictionary should only contains the keys\nof tasks that can create conditions.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n12:\n[\nDiscreteDistribution([(ConditionElementsExample.NC_PART_1_OPERATION_1, 0.1), (ConditionElementsExample.OK, 0.9)]),\nDiscreteDistribution([(ConditionElementsExample.HARDWARE_ISSUE_MACHINE_A, 0.05), ('paper', 0.1), (ConditionElementsExample.OK, 0.95)])\n]\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-5"}},[t._v("#")]),t._v(" get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-5"}},[t._v("#")]),t._v(" get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-5"}},[t._v("#")]),t._v(" get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-301"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-301"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-5"}},[t._v("#")]),t._v(" get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-5"}},[t._v("#")]),t._v(" get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-302"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-302"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-5"}},[t._v("#")]),t._v(" get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-303"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-303"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-6"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-191"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-304"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-304"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-5"}},[t._v("#")]),t._v(" get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"initialize-domain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#initialize-domain-3"}},[t._v("#")]),t._v(" initialize_domain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"initialize_domain",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Initialize a scheduling domain. This function needs to be called when instantiating a scheduling domain.")]),t._v(" "),a("h3",{attrs:{id:"is-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-11"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-192"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-305"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-305"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-11"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-193"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-306"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-306"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-11"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-194"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-307"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-307"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-11"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-195"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-308"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-308"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-11"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-196"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-309"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-309"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-6"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-197"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-310"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-310"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-10"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-311"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-311"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-11"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-312"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-312"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-11"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-198"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-313"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-313"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-5"}},[t._v("#")]),t._v(" sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-5"}},[t._v("#")]),t._v(" sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-5"}},[t._v("#")]),t._v(" sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample, store and return task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-inplace-environment-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-inplace-environment-3"}},[t._v("#")]),t._v(" set_inplace_environment "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_inplace_environment",sig:{params:[{name:"self"},{name:"inplace_environment",annotation:"bool"}]}}}),t._v(" "),a("p",[t._v("Activate or not the fact that the simulator modifies the given state inplace or create a copy before.\nThe inplace version is several times faster but will lead to bugs in graph search solver.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-11"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-199"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-6"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-200"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-314"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-314"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-11"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-201"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-315"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-315"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-3"}},[t._v("#")]),t._v(" update_complete_dummy_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly started tasks whose duration is 0 from ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-simulation-3"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-dummy-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-dummy-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_complete_dummy_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_dummy_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly started tasks whose duration is 0\nfrom ongoing to complete.")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-3"}},[t._v("#")]),t._v(" update_complete_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-simulation-3"}},[t._v("#")]),t._v(" update_complete_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of newly completed tasks in the state from ongoing to complete\nand update resource availability. This function will also log in task_details the time it was complete")]),t._v(" "),a("h3",{attrs:{id:"update-complete-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-complete-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_complete_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_complete_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of newly completed tasks in the state from ongoing\nto complete, update resource availability and update on-completion conditions.\nThis function will also log in task_details the time it was complete.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-3"}},[t._v("#")]),t._v(" update_conditional_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-simulation-3"}},[t._v("#")]),t._v(" update_conditional_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update remaining tasks by checking conditions and potentially\nadding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-conditional-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-conditional-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_conditional_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_conditional_tasks_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update remaining tasks by checking conditions and potentially adding conditional tasks.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-3"}},[t._v("#")]),t._v(" update_pause_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from ongoing to paused if specified in the action\nand update resource availability. This function will also log in task_details the time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-simulation-3"}},[t._v("#")]),t._v(" update_pause_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-pause-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-pause-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_pause_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_pause_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from ongoing to paused if\nspecified in the action and update resource availability. This function will also log in task_details\nthe time it was paused.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-3"}},[t._v("#")]),t._v(" update_progress "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("Update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-simulation-3"}},[t._v("#")]),t._v(" update_progress_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"}]}}}),t._v(" "),a("p",[t._v("In a simulation scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-progress-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-progress-uncertain-3"}},[t._v("#")]),t._v(" update_progress_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_progress_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the progress of all ongoing tasks in the state.")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-3"}},[t._v("#")]),t._v(" update_resource_availability "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-simulation-3"}},[t._v("#")]),t._v(" update_resource_availability_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update resource availability for next time step.\nThis should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resource-availability-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resource-availability-uncertain-3"}},[t._v("#")]),t._v(" update_resource_availability_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resource_availability_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update resource availability for next time step. This should be called after update_time().")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-3"}},[t._v("#")]),t._v(" update_resume_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from paused to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was resumed")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-simulation-3"}},[t._v("#")]),t._v(" update_resume_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulationn scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-resume-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-resume-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_resume_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_resume_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from paused to ongoing if specified\nin the action and update resource availability. This function will also log in task_details the time it was\nresumed.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-3"}},[t._v("#")]),t._v(" update_start_tasks "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the status of a task from remaining to ongoing if specified in the action\nand update resource availability. This function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-simulation-3"}},[t._v("#")]),t._v(" update_start_tasks_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the status of a task from remaining to ongoing if\nspecified in the action and update resource availability. This function will also log in task_details the\ntime it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-start-tasks-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-start-tasks-uncertain-3"}},[t._v("#")]),t._v(" update_start_tasks_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_start_tasks_uncertain",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In an uncertain scheduling environment, update the status of a task from remaining to ongoing\nif specified in the action and update resource availability.\nThis function returns a DsicreteDistribution of State.\nThis function will also log in task_details the time it was started.")]),t._v(" "),a("h3",{attrs:{id:"update-time-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-3"}},[t._v("#")]),t._v(" update_time "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-simulation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-simulation-3"}},[t._v("#")]),t._v(" update_time_simulation "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_simulation",sig:{params:[{name:"self"},{name:"state",annotation:"State"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("In a simulated scheduling environment, update the time of the state if the time_progress attribute of the\ngiven EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"update-time-uncertain-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-time-uncertain-3"}},[t._v("#")]),t._v(" update_time_uncertain "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"update_time_uncertain",sig:{params:[{name:"self"},{name:"states",annotation:"DiscreteDistribution[State]"},{name:"action",annotation:"SchedulingAction"}]}}}),t._v(" "),a("p",[t._v("Update the time of the state if the time_progress attribute of the given EnumerableAction is True.")]),t._v(" "),a("h3",{attrs:{id:"add-to-current-conditions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-to-current-conditions-6"}},[t._v("#")]),t._v(" _add_to_current_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_add_to_current_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Samples completion conditions for a given task and add these conditions to the list of conditions in the\ngiven state. This function should be called when a task complete.")]),t._v(" "),a("h3",{attrs:{id:"check-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-12"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-202"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-316"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-316"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-17"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-317"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-317"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-18"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-all-resources-skills-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-6"}},[t._v("#")]),t._v(" _get_all_resources_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-tasks-skills-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-6"}},[t._v("#")]),t._v(" _get_all_tasks_skills "),a("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),t._v(" "),a("h3",{attrs:{id:"get-all-unconditional-tasks-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-all-unconditional-tasks-6"}},[t._v("#")]),t._v(" _get_all_unconditional_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_all_unconditional_tasks",sig:{params:[{name:"self"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids for which there are no conditions. These tasks are to be considered at\nthe start of a project (i.e. in the initial state).")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-12"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-203"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-318"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-318"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-6"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Returns the action space from a state.\nTODO : think about a way to avoid the instaceof usage.")]),t._v(" "),a("h3",{attrs:{id:"get-available-tasks-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-available-tasks-6"}},[t._v("#")]),t._v(" _get_available_tasks "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_available_tasks",sig:{params:[{name:"self"},{name:"state"}],return:"Set[int]"}}}),t._v(" "),a("p",[t._v("Returns the set of all task ids that can be considered under the conditions defined in the given state.\nNote that the set will contains all ids for all tasks in the domain that meet the conditions, that is tasks\nthat are remaining, or that have been completed, paused or started / resumed.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-12"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-204"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-319"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-319"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-6"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-205"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-205"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-320"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-320"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-17"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-321"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-321"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-18"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-322"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-322"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-17"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-323"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-323"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-18"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Create and return an empty initial state")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-17"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-324"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-324"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-18"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-325"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-325"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-max-horizon-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-max-horizon-6"}},[t._v("#")]),t._v(" _get_max_horizon "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_max_horizon",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the maximum time horizon (int)")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-11"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-326"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-326"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-12"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-327"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-327"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-mode-costs-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-mode-costs-6"}},[t._v("#")]),t._v(" _get_mode_costs "),a("Badge",{attrs:{text:"WithModeCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_mode_costs",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, float]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is the id of a task (int), the second key the id of a mode\nand the value indicates the cost of execution the task in the mode.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-6"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with DeterministicTransitions. This function will be ignored\nif the domain is defined as having UncertainTransitions or Simulation.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-9"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined with UncertainTransitions. This function will be ignored\nif the domain is defined as a Simulation. This function may also be used by uncertainty-specialised solvers\non deterministic domains.")]),t._v(" "),a("h3",{attrs:{id:"get-objectives-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-objectives-6"}},[t._v("#")]),t._v(" _get_objectives "),a("Badge",{attrs:{text:"SchedulingDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_objectives",sig:{params:[{name:"self"}],return:"List[SchedulingObjectiveEnum]"}}}),t._v(" "),a("p",[t._v("Return the objectives to consider as a list. The items should be of SchedulingObjectiveEnum type.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-12"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-206"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-206"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-328"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-328"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-12"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-207"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-207"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-329"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-329"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-17"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-330"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-330"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-18"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("To be implemented if needed one day.")]),t._v(" "),a("h3",{attrs:{id:"get-preallocations-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-preallocations-6"}},[t._v("#")]),t._v(" _get_preallocations "),a("Badge",{attrs:{text:"WithPreallocations",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_preallocations",sig:{params:[{name:"self"}],return:"Dict[int, List[str]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value indicates the pre-allocated resources for this task (as a list of str)")]),t._v(" "),a("h3",{attrs:{id:"get-predecessors-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-predecessors-6"}},[t._v("#")]),t._v(" _get_predecessors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_predecessors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the predecessors of the task. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-cost-per-time-unit-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-cost-per-time-unit-6"}},[t._v("#")]),t._v(" _get_resource_cost_per_time_unit "),a("Badge",{attrs:{text:"WithResourceCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_cost_per_time_unit",sig:{params:[{name:"self"}],return:"Dict[str, float]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the name of a resource (str)\nand the value indicates the cost of using this resource per time unit.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-renewability-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-renewability-6"}},[t._v("#")]),t._v(" _get_resource_renewability "),a("Badge",{attrs:{text:"MixedRenewable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_renewability",sig:{params:[{name:"self"}],return:"Dict[str, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource name (string)\nand the value whether this resource is renewable (True) or not (False).")]),t._v(" "),a("h3",{attrs:{id:"get-resource-type-for-unit-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-type-for-unit-6"}},[t._v("#")]),t._v(" _get_resource_type_for_unit "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_type_for_unit",sig:{params:[{name:"self"}],return:"Dict[str, str]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a resource unit name and the value a resource type name.\nAn empty dictionary can be used if there are no resource unit matching a resource type.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-types-names-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-types-names-6"}},[t._v("#")]),t._v(" _get_resource_types_names "),a("Badge",{attrs:{text:"WithResourceTypes",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_types_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource types as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-resource-units-names-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-resource-units-names-6"}},[t._v("#")]),t._v(" _get_resource_units_names "),a("Badge",{attrs:{text:"WithResourceUnits",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_resource_units_names",sig:{params:[{name:"self"}],return:"List[str]"}}}),t._v(" "),a("p",[t._v("Return the names (string) of all resource units as a list.")]),t._v(" "),a("h3",{attrs:{id:"get-successors-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-successors-6"}},[t._v("#")]),t._v(" _get_successors "),a("Badge",{attrs:{text:"WithPrecedence",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_successors",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return the successors of the tasks. Successors are given as a list for a task given as a key.")]),t._v(" "),a("h3",{attrs:{id:"get-task-existence-conditions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-existence-conditions-6"}},[t._v("#")]),t._v(" _get_task_existence_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_existence_conditions",sig:{params:[{name:"self"}],return:"Dict[int, List[int]]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a list of conditions to be respected (True)\nfor the task to be part of the schedule. If a task has no entry in the dictionary,\nthere is no conditions for that task.")]),t._v(" "),a("p",[t._v("Example:\nreturn\n{\n20: [get_all_condition_items().NC_PART_1_OPERATION_1],\n21: [get_all_condition_items().HARDWARE_ISSUE_MACHINE_A]\n22: [get_all_condition_items().NC_PART_1_OPERATION_1, get_all_condition_items().NC_PART_1_OPERATION_2]\n}e")]),t._v(" "),a("h3",{attrs:{id:"get-task-paused-non-renewable-resource-returned-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-paused-non-renewable-resource-returned-6"}},[t._v("#")]),t._v(" _get_task_paused_non_renewable_resource_returned "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_paused_non_renewable_resource_returned",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type bool indicating\nif the non-renewable resources are consumed when the task is paused (False) or made available again (True).\nE.g. {\n2: False # if paused, non-renewable resource will be consumed\n5: True # if paused, the non-renewable resource will be available again\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-preemptivity-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-preemptivity-6"}},[t._v("#")]),t._v(" _get_task_preemptivity "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_preemptivity",sig:{params:[{name:"self"}],return:"Dict[int, bool]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value a boolean indicating\nif the task can be paused or stopped.\nE.g. {\n1: False\n2: True\n3: False\n4: False\n5: True\n6: False\n}")]),t._v(" "),a("h3",{attrs:{id:"get-task-progress-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-6"}},[t._v("#")]),t._v(" _get_task_progress "),a("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),a("h4",{attrs:{id:"returns-331"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-331"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),a("h3",{attrs:{id:"get-task-resuming-type-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-task-resuming-type-6"}},[t._v("#")]),t._v(" _get_task_resuming_type "),a("Badge",{attrs:{text:"WithPreemptivity",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_task_resuming_type",sig:{params:[{name:"self"}],return:"Dict[int, ResumeType]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is a task id and the value is of type ResumeType indicating\nif the task can be resumed (restarted from where it was paused with no time loss)\nor restarted (restarted from the start).\nE.g. {\n1: ResumeType.NA\n2: ResumeType.Resume\n3: ResumeType.NA\n4: ResumeType.NA\n5: ResumeType.Restart\n6: ResumeType.NA\n}")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-ids-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-ids-3"}},[t._v("#")]),t._v(" _get_tasks_ids "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_ids",sig:{params:[{name:"self"}],return:"Union[Set[int], Dict[int, Any], List[int]]"}}}),t._v(" "),a("p",[t._v("Return a set or dict of int = id of tasks")]),t._v(" "),a("h3",{attrs:{id:"get-tasks-modes-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-tasks-modes-3"}},[t._v("#")]),t._v(" _get_tasks_modes "),a("Badge",{attrs:{text:"MultiMode",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_tasks_modes",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, ModeConsumption]]"}}}),t._v(" "),a("p",[t._v("Return a nested dictionary where the first key is a task id and the second key is a mode id.\nThe value is a Mode object defining the resource consumption.\nIf the domain is an instance of VariableResourceConsumption, VaryingModeConsumption objects should be used.\nIf this is not the case (i.e. the domain is an instance of ConstantResourceConsumption),\nthen ConstantModeConsumption should be used.")]),t._v(" "),a("p",[t._v("E.g. with constant resource consumption\n{\n12: {\n1: ConstantModeConsumption({'rt_1': 2, 'rt_2': 0, 'ru_1': 1}),\n2: ConstantModeConsumption({'rt_1': 0, 'rt_2': 3, 'ru_1': 1}),\n}\n}")]),t._v(" "),a("p",[t._v("E.g. with time varying resource consumption\n{\n12: {\n1: VaryingModeConsumption({'rt_1': [2,2,2,2,3], 'rt_2': [0,0,0,0,0], 'ru_1': [1,1,1,1,1]}),\n2: VaryingModeConsumption({'rt_1': [1,1,1,1,2,2,2], 'rt_2': [0,0,0,0,0,0,0], 'ru_1': [1,1,1,1,1,1,1]}),\n}\n}")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-6"}},[t._v("#")]),t._v(" _get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-332"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-332"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-6"}},[t._v("#")]),t._v(" _get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-333"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-333"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-variable-resource-consumption-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-variable-resource-consumption-6"}},[t._v("#")]),t._v(" _get_variable_resource_consumption "),a("Badge",{attrs:{text:"VariableResourceConsumption",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_variable_resource_consumption",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Return true if the domain has variable resource consumption,\nfalse if the consumption of resource does not vary in time for any of the tasks")]),t._v(" "),a("h3",{attrs:{id:"init-memory-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-6"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-208"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-208"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-334"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-334"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-12"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-209"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-209"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-335"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-335"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-12"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-210"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-210"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-336"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-336"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-6"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-211"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-211"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-337"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-337"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-12"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-212"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-212"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-338"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-338"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-6"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-213"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-213"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-339"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-339"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-12"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-214"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-214"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-340"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-340"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-12"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-215"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-215"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-341"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-341"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-11"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-342"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-342"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-12"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-343"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-343"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-12"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-344"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-344"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-12"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-216"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-216"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-345"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-345"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"sample-completion-conditions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-completion-conditions-6"}},[t._v("#")]),t._v(" _sample_completion_conditions "),a("Badge",{attrs:{text:"WithConditionalTasks",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_completion_conditions",sig:{params:[{name:"self"},{name:"task",annotation:"int"}],return:"List[int]"}}}),t._v(" "),a("p",[t._v("Samples the condition distributions associated with the given task and return a list of sampled\nconditions.")]),t._v(" "),a("h3",{attrs:{id:"sample-quantity-resource-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-quantity-resource-6"}},[t._v("#")]),t._v(" _sample_quantity_resource "),a("Badge",{attrs:{text:"UncertainResourceAvailabilityChanges",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_quantity_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"},{name:"time",annotation:"int"},{name:"**kwargs"}],return:"int"}}}),t._v(" "),a("p",[t._v("Sample an amount of resource availability (int) for the given resource\n(either resource type or resource unit) at the given time. This number should be the sum of the number of\nresource available at time t and the number of resource of this type consumed so far).")]),t._v(" "),a("h3",{attrs:{id:"sample-task-duration-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-6"}},[t._v("#")]),t._v(" _sample_task_duration "),a("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return a task duration for the given task in the given mode.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-12"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-217"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-217"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-6"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-346"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-346"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-6"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("This function will be used if the domain is defined as a Simulation (i.e. transitions are defined by call to\na simulation). This function may also be used by simulation-based solvers on non-Simulation domains.")]),t._v(" "),a("h3",{attrs:{id:"state-step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-6"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-218"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-218"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-347"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-347"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-12"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-219"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-219"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-348"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-348"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")])],1)}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/45.2460e63f.js b/assets/js/45.a8c5ea73.js similarity index 98% rename from assets/js/45.2460e63f.js rename to assets/js/45.a8c5ea73.js index ce467d8dd6..ff96bff902 100644 --- a/assets/js/45.2460e63f.js +++ b/assets/js/45.a8c5ea73.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{555:function(e,t,a){"use strict";a.r(t);var s=a(38),n=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-scheduling-domains-modelling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-scheduling-domains-modelling"}},[e._v("#")]),e._v(" builders.domain.scheduling.scheduling_domains_modelling")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"schedulingactionenum"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schedulingactionenum"}},[e._v("#")]),e._v(" SchedulingActionEnum")]),e._v(" "),a("p",[e._v("Enum defining the different types of scheduling actions:")]),e._v(" "),a("ul",[a("li",[e._v("START: start a task")]),e._v(" "),a("li",[e._v("PAUSE: pause a task")]),e._v(" "),a("li",[e._v("RESUME: resume a task")]),e._v(" "),a("li",[e._v("TIME_PR: do not apply actions on tasks and progress in time")])]),e._v(" "),a("h2",{attrs:{id:"state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state"}},[e._v("#")]),e._v(" State")]),e._v(" "),a("p",[e._v("Class modelling a scheduling state and used by sk-decide scheduling domains.")]),e._v(" "),a("p",[e._v("It contains the following information:\nt: the timestamp.\ntask_ids: a list of all task ids in the scheduling domain.\ntasks_unsatisfiable: a set containing the ids of tasks for which canditions are not fulfilled\ntasks_ongoing: a set containing the ids of tasks started and not paused and still to be completed\ntasks_complete: a set containing the ids of tasks that have been completed\ntasks_paused: a set containing the ids of tasks that have been started and paused but not resumed yet\ntasks_progress: a dictionary where the key is a task id (int) and\nthe value the progress of the task between 0 and 1 (float)\ntasks_mode: a dictionary where the key is a task id (int) and\nthe value the mode used to execute the task (int)\nresource_to_task: dictionary where the key is the name of a resource (str) and the value a task\nit is currently assigned to (int)\nresource_availability: dictionary where the key is the name of a resource (str) and the value the number of\nresource units available for this type of resource regardless of the task assignments (int). Where the\nresource name is a resource unit itself, the availability value takes a value of either 1 (available)\nor 0 (unavailable)\nresource_used: dictionary where the key is the name of a resource (str) and the value the number of\nresource units for this resource type used/assigned on tasks at this time (int). Where the resource\nname is a resource unit itself, the value takes a value of either 1 (used) or 0 (not used)\nresource_used_for_task: nested dictionary where the first key is a task id (int), the second key is the name of\na resource (str) and the value is the number of resource units for this resource type used/assigned on tasks\nat this time (int). Where the resource name is a resource unit itself, the value takes a value of either 1\n(used) or 0 (not used).\ntasks_details: dictionary where the key is the id of a task (int) and the value a Task object. This Task object\ncontains information about the task execution and can be used to post-process the run. It is only used\nby the domain to store execution information and not used by scheduling solvers.\ntasks_full_details: like taks_details but containing all taks, even the ones not completed.\n_current_conditions: set of conditions observed so far, to be used by domains with WithConditionalTask\nproperties")]),e._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[e._v("#")]),e._v(" Constructor "),a("Badge",{attrs:{text:"State",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"State",sig:{params:[{name:"task_ids",annotation:"Iterable[int]"},{name:"tasks_available",default:"None",annotation:"Set[int]"}]}}}),e._v(" "),a("p",[e._v("Initialize a scheduling state.")]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("task_ids")]),e._v(": a list of all task ids in the scheduling domain.")]),e._v(" "),a("li",[a("strong",[e._v("tasks_available")]),e._v(": a set of task ids that are available for scheduling. This may differ from task_ids if the\ndomain contains conditional tasks.")])]),e._v(" "),a("h2",{attrs:{id:"schedulingaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schedulingaction"}},[e._v("#")]),e._v(" SchedulingAction")]),e._v(" "),a("p",[e._v("Can be used to define actions on single task. Resource allocation can only be managed through changes in the mode.\nThe time_progress attribute triggers a change in time (i.e. triggers the domain to increment its current time).\nIt should thus be used as the last action to be applied at any point in time\nThese actions are enumerable due to their coarse grain definition.")]),e._v(" "),a("p",[e._v("E.g.\ntask = 12 (start action 12 in mode 1)\naction = EnumerableActionEnum.START\nmode = 1\ntime_progress = False")]),e._v(" "),a("p",[e._v("E.g. (pause action 13, NB: mode info is not useful here)\ntask = 13\naction = EnumerableActionEnum.PAUSE\nmode = None\ntime_progress = False")]),e._v(" "),a("p",[e._v("E.g. (do nothing and progress in time)\ntask = None\naction = None\nmode = None\ntime_progress = True")]),e._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[e._v("#")]),e._v(" Constructor "),a("Badge",{attrs:{text:"SchedulingAction",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"SchedulingAction",sig:{params:[{name:"task",annotation:"Union[int, None]"},{name:"action",annotation:"SchedulingActionEnum"},{name:"mode",annotation:"Union[int, None]"},{name:"time_progress",annotation:"bool"},{name:"resource_unit_names",default:"None",annotation:"Optional[Set[str]]"}]}}}),e._v(" "),a("p",[e._v("Initialize self. See help(type(self)) for accurate signature.")])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{557:function(e,t,a){"use strict";a.r(t);var s=a(38),n=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-scheduling-domains-modelling"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-scheduling-domains-modelling"}},[e._v("#")]),e._v(" builders.domain.scheduling.scheduling_domains_modelling")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),a("skdecide-summary")],1),e._v(" "),a("h2",{attrs:{id:"schedulingactionenum"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schedulingactionenum"}},[e._v("#")]),e._v(" SchedulingActionEnum")]),e._v(" "),a("p",[e._v("Enum defining the different types of scheduling actions:")]),e._v(" "),a("ul",[a("li",[e._v("START: start a task")]),e._v(" "),a("li",[e._v("PAUSE: pause a task")]),e._v(" "),a("li",[e._v("RESUME: resume a task")]),e._v(" "),a("li",[e._v("TIME_PR: do not apply actions on tasks and progress in time")])]),e._v(" "),a("h2",{attrs:{id:"state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state"}},[e._v("#")]),e._v(" State")]),e._v(" "),a("p",[e._v("Class modelling a scheduling state and used by sk-decide scheduling domains.")]),e._v(" "),a("p",[e._v("It contains the following information:\nt: the timestamp.\ntask_ids: a list of all task ids in the scheduling domain.\ntasks_unsatisfiable: a set containing the ids of tasks for which canditions are not fulfilled\ntasks_ongoing: a set containing the ids of tasks started and not paused and still to be completed\ntasks_complete: a set containing the ids of tasks that have been completed\ntasks_paused: a set containing the ids of tasks that have been started and paused but not resumed yet\ntasks_progress: a dictionary where the key is a task id (int) and\nthe value the progress of the task between 0 and 1 (float)\ntasks_mode: a dictionary where the key is a task id (int) and\nthe value the mode used to execute the task (int)\nresource_to_task: dictionary where the key is the name of a resource (str) and the value a task\nit is currently assigned to (int)\nresource_availability: dictionary where the key is the name of a resource (str) and the value the number of\nresource units available for this type of resource regardless of the task assignments (int). Where the\nresource name is a resource unit itself, the availability value takes a value of either 1 (available)\nor 0 (unavailable)\nresource_used: dictionary where the key is the name of a resource (str) and the value the number of\nresource units for this resource type used/assigned on tasks at this time (int). Where the resource\nname is a resource unit itself, the value takes a value of either 1 (used) or 0 (not used)\nresource_used_for_task: nested dictionary where the first key is a task id (int), the second key is the name of\na resource (str) and the value is the number of resource units for this resource type used/assigned on tasks\nat this time (int). Where the resource name is a resource unit itself, the value takes a value of either 1\n(used) or 0 (not used).\ntasks_details: dictionary where the key is the id of a task (int) and the value a Task object. This Task object\ncontains information about the task execution and can be used to post-process the run. It is only used\nby the domain to store execution information and not used by scheduling solvers.\ntasks_full_details: like taks_details but containing all taks, even the ones not completed.\n_current_conditions: set of conditions observed so far, to be used by domains with WithConditionalTask\nproperties")]),e._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[e._v("#")]),e._v(" Constructor "),a("Badge",{attrs:{text:"State",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"State",sig:{params:[{name:"task_ids",annotation:"Iterable[int]"},{name:"tasks_available",default:"None",annotation:"Set[int]"}]}}}),e._v(" "),a("p",[e._v("Initialize a scheduling state.")]),e._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),a("ul",[a("li",[a("strong",[e._v("task_ids")]),e._v(": a list of all task ids in the scheduling domain.")]),e._v(" "),a("li",[a("strong",[e._v("tasks_available")]),e._v(": a set of task ids that are available for scheduling. This may differ from task_ids if the\ndomain contains conditional tasks.")])]),e._v(" "),a("h2",{attrs:{id:"schedulingaction"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#schedulingaction"}},[e._v("#")]),e._v(" SchedulingAction")]),e._v(" "),a("p",[e._v("Can be used to define actions on single task. Resource allocation can only be managed through changes in the mode.\nThe time_progress attribute triggers a change in time (i.e. triggers the domain to increment its current time).\nIt should thus be used as the last action to be applied at any point in time\nThese actions are enumerable due to their coarse grain definition.")]),e._v(" "),a("p",[e._v("E.g.\ntask = 12 (start action 12 in mode 1)\naction = EnumerableActionEnum.START\nmode = 1\ntime_progress = False")]),e._v(" "),a("p",[e._v("E.g. (pause action 13, NB: mode info is not useful here)\ntask = 13\naction = EnumerableActionEnum.PAUSE\nmode = None\ntime_progress = False")]),e._v(" "),a("p",[e._v("E.g. (do nothing and progress in time)\ntask = None\naction = None\nmode = None\ntime_progress = True")]),e._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[e._v("#")]),e._v(" Constructor "),a("Badge",{attrs:{text:"SchedulingAction",type:"tip"}})],1),e._v(" "),a("skdecide-signature",{attrs:{name:"SchedulingAction",sig:{params:[{name:"task",annotation:"Union[int, None]"},{name:"action",annotation:"SchedulingActionEnum"},{name:"mode",annotation:"Union[int, None]"},{name:"time_progress",annotation:"bool"},{name:"resource_unit_names",default:"None",annotation:"Optional[Set[str]]"}]}}}),e._v(" "),a("p",[e._v("Initialize self. See help(type(self)) for accurate signature.")])],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/46.abf71b97.js b/assets/js/46.42e7f1ef.js similarity index 99% rename from assets/js/46.abf71b97.js rename to assets/js/46.42e7f1ef.js index 8fb3730e82..21ab9028c2 100644 --- a/assets/js/46.abf71b97.js +++ b/assets/js/46.42e7f1ef.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{556:function(e,s,t){"use strict";t.r(s);var a=t(38),i=Object(a.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"builders-domain-scheduling-skills"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-skills"}},[e._v("#")]),e._v(" builders.domain.scheduling.skills")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),t("skdecide-summary")],1),e._v(" "),t("h2",{attrs:{id:"withresourceskills"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withresourceskills"}},[e._v("#")]),e._v(" WithResourceSkills")]),e._v(" "),t("p",[e._v("A domain must inherit this class if its resources (either resource types or resource units)\nhave different set of skills.")]),e._v(" "),t("h3",{attrs:{id:"find-one-ressource-to-do-one-task"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#find-one-ressource-to-do-one-task"}},[e._v("#")]),e._v(" find_one_ressource_to_do_one_task "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"find_one_ressource_to_do_one_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"List[str]"}}}),e._v(" "),t("p",[e._v("For the common case when it is possible to do the task by one resource unit.\nFor general case, it might just return no possible ressource unit.")]),e._v(" "),t("h3",{attrs:{id:"get-all-resources-skills"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills"}},[e._v("#")]),e._v(" get_all_resources_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-all-tasks-skills"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills"}},[e._v("#")]),e._v(" get_all_tasks_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-skills-names"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-names"}},[e._v("#")]),e._v(" get_skills_names "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_names",sig:{params:[{name:"self"}],return:"Set[str]"}}}),e._v(" "),t("p",[e._v("Return a list of all skill names as a list of str. Skill names are defined in the 2 dictionaries returned\nby the get_all_resources_skills and get_all_tasks_skills functions.")]),e._v(" "),t("h3",{attrs:{id:"get-skills-of-resource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-resource"}},[e._v("#")]),e._v(" get_skills_of_resource "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_of_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"}],return:"Dict[str, Any]"}}}),e._v(" "),t("p",[e._v("Return the skills of a given resource")]),e._v(" "),t("h3",{attrs:{id:"get-skills-of-task"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-task"}},[e._v("#")]),e._v(" get_skills_of_task "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_of_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"Dict[str, Any]"}}}),e._v(" "),t("p",[e._v("Return the skill requirements for a given task")]),e._v(" "),t("h3",{attrs:{id:"get-all-resources-skills-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-2"}},[e._v("#")]),e._v(" _get_all_resources_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-all-tasks-skills-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-2"}},[e._v("#")]),e._v(" _get_all_tasks_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),e._v(" "),t("h2",{attrs:{id:"withoutresourceskills"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withoutresourceskills"}},[e._v("#")]),e._v(" WithoutResourceSkills")]),e._v(" "),t("p",[e._v("A domain must inherit this class if no resources skills have to be considered.")]),e._v(" "),t("h3",{attrs:{id:"find-one-ressource-to-do-one-task-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#find-one-ressource-to-do-one-task-2"}},[e._v("#")]),e._v(" find_one_ressource_to_do_one_task "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"find_one_ressource_to_do_one_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"List[str]"}}}),e._v(" "),t("p",[e._v("For the common case when it is possible to do the task by one resource unit.\nFor general case, it might just return no possible ressource unit.")]),e._v(" "),t("h3",{attrs:{id:"get-all-resources-skills-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-3"}},[e._v("#")]),e._v(" get_all_resources_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-all-tasks-skills-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-3"}},[e._v("#")]),e._v(" get_all_tasks_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-skills-names-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-names-2"}},[e._v("#")]),e._v(" get_skills_names "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_names",sig:{params:[{name:"self"}],return:"Set[str]"}}}),e._v(" "),t("p",[e._v("Return a list of all skill names as a list of str. Skill names are defined in the 2 dictionaries returned\nby the get_all_resources_skills and get_all_tasks_skills functions.")]),e._v(" "),t("h3",{attrs:{id:"get-skills-of-resource-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-resource-2"}},[e._v("#")]),e._v(" get_skills_of_resource "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_of_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"}],return:"Dict[str, Any]"}}}),e._v(" "),t("p",[e._v("Return the skills of a given resource")]),e._v(" "),t("h3",{attrs:{id:"get-skills-of-task-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-task-2"}},[e._v("#")]),e._v(" get_skills_of_task "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_of_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"Dict[str, Any]"}}}),e._v(" "),t("p",[e._v("Return the skill requirements for a given task")]),e._v(" "),t("h3",{attrs:{id:"get-all-resources-skills-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-4"}},[e._v("#")]),e._v(" _get_all_resources_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-all-tasks-skills-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-4"}},[e._v("#")]),e._v(" _get_all_tasks_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[str, Any]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")])],1)}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{558:function(e,s,t){"use strict";t.r(s);var a=t(38),i=Object(a.a)({},(function(){var e=this,s=e.$createElement,t=e._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"builders-domain-scheduling-skills"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-skills"}},[e._v("#")]),e._v(" builders.domain.scheduling.skills")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),t("skdecide-summary")],1),e._v(" "),t("h2",{attrs:{id:"withresourceskills"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withresourceskills"}},[e._v("#")]),e._v(" WithResourceSkills")]),e._v(" "),t("p",[e._v("A domain must inherit this class if its resources (either resource types or resource units)\nhave different set of skills.")]),e._v(" "),t("h3",{attrs:{id:"find-one-ressource-to-do-one-task"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#find-one-ressource-to-do-one-task"}},[e._v("#")]),e._v(" find_one_ressource_to_do_one_task "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"find_one_ressource_to_do_one_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"List[str]"}}}),e._v(" "),t("p",[e._v("For the common case when it is possible to do the task by one resource unit.\nFor general case, it might just return no possible ressource unit.")]),e._v(" "),t("h3",{attrs:{id:"get-all-resources-skills"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills"}},[e._v("#")]),e._v(" get_all_resources_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-all-tasks-skills"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills"}},[e._v("#")]),e._v(" get_all_tasks_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-skills-names"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-names"}},[e._v("#")]),e._v(" get_skills_names "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_names",sig:{params:[{name:"self"}],return:"Set[str]"}}}),e._v(" "),t("p",[e._v("Return a list of all skill names as a list of str. Skill names are defined in the 2 dictionaries returned\nby the get_all_resources_skills and get_all_tasks_skills functions.")]),e._v(" "),t("h3",{attrs:{id:"get-skills-of-resource"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-resource"}},[e._v("#")]),e._v(" get_skills_of_resource "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_of_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"}],return:"Dict[str, Any]"}}}),e._v(" "),t("p",[e._v("Return the skills of a given resource")]),e._v(" "),t("h3",{attrs:{id:"get-skills-of-task"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-task"}},[e._v("#")]),e._v(" get_skills_of_task "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_of_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"Dict[str, Any]"}}}),e._v(" "),t("p",[e._v("Return the skill requirements for a given task")]),e._v(" "),t("h3",{attrs:{id:"get-all-resources-skills-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-2"}},[e._v("#")]),e._v(" _get_all_resources_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-all-tasks-skills-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-2"}},[e._v("#")]),e._v(" _get_all_tasks_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),e._v(" "),t("h2",{attrs:{id:"withoutresourceskills"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#withoutresourceskills"}},[e._v("#")]),e._v(" WithoutResourceSkills")]),e._v(" "),t("p",[e._v("A domain must inherit this class if no resources skills have to be considered.")]),e._v(" "),t("h3",{attrs:{id:"find-one-ressource-to-do-one-task-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#find-one-ressource-to-do-one-task-2"}},[e._v("#")]),e._v(" find_one_ressource_to_do_one_task "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"find_one_ressource_to_do_one_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"List[str]"}}}),e._v(" "),t("p",[e._v("For the common case when it is possible to do the task by one resource unit.\nFor general case, it might just return no possible ressource unit.")]),e._v(" "),t("h3",{attrs:{id:"get-all-resources-skills-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-3"}},[e._v("#")]),e._v(" get_all_resources_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-all-tasks-skills-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-3"}},[e._v("#")]),e._v(" get_all_tasks_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, Dict[str, Any]]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-skills-names-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-names-2"}},[e._v("#")]),e._v(" get_skills_names "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_names",sig:{params:[{name:"self"}],return:"Set[str]"}}}),e._v(" "),t("p",[e._v("Return a list of all skill names as a list of str. Skill names are defined in the 2 dictionaries returned\nby the get_all_resources_skills and get_all_tasks_skills functions.")]),e._v(" "),t("h3",{attrs:{id:"get-skills-of-resource-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-resource-2"}},[e._v("#")]),e._v(" get_skills_of_resource "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_of_resource",sig:{params:[{name:"self"},{name:"resource",annotation:"str"}],return:"Dict[str, Any]"}}}),e._v(" "),t("p",[e._v("Return the skills of a given resource")]),e._v(" "),t("h3",{attrs:{id:"get-skills-of-task-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-skills-of-task-2"}},[e._v("#")]),e._v(" get_skills_of_task "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_skills_of_task",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",annotation:"int"}],return:"Dict[str, Any]"}}}),e._v(" "),t("p",[e._v("Return the skill requirements for a given task")]),e._v(" "),t("h3",{attrs:{id:"get-all-resources-skills-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-resources-skills-4"}},[e._v("#")]),e._v(" _get_all_resources_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_all_resources_skills",sig:{params:[{name:"self"}],return:"Dict[str, Dict[str, Any]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a resource type or resource unit\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {unit: {skill: (detail of skill)}}")]),e._v(" "),t("h3",{attrs:{id:"get-all-tasks-skills-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-all-tasks-skills-4"}},[e._v("#")]),e._v(" _get_all_tasks_skills "),t("Badge",{attrs:{text:"WithResourceSkills",type:"warn"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_get_all_tasks_skills",sig:{params:[{name:"self"}],return:"Dict[int, Dict[str, Any]]"}}}),e._v(" "),t("p",[e._v("Return a nested dictionary where the first key is the name of a task\nand the second key is the name of a skill. The value defines the details of the skill.\nE.g. {task: {skill: (detail of skill)}}")])],1)}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/47.f3dbe971.js b/assets/js/47.08a92069.js similarity index 90% rename from assets/js/47.f3dbe971.js rename to assets/js/47.08a92069.js index dc5adf6e17..e200ccc7a1 100644 --- a/assets/js/47.f3dbe971.js +++ b/assets/js/47.08a92069.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{557:function(t,s,i){"use strict";i.r(s);var a=i(38),e=Object(a.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-task"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-task"}},[this._v("#")]),this._v(" builders.domain.scheduling.task")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{559:function(t,s,i){"use strict";i.r(s);var a=i(38),e=Object(a.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-task"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-task"}},[this._v("#")]),this._v(" builders.domain.scheduling.task")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/48.430bc4fd.js b/assets/js/48.19a3d966.js similarity index 99% rename from assets/js/48.430bc4fd.js rename to assets/js/48.19a3d966.js index ad6c60734e..734d3d52a1 100644 --- a/assets/js/48.430bc4fd.js +++ b/assets/js/48.19a3d966.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{559:function(t,a,n){"use strict";n.r(a);var e=n(38),i=Object(e.a)({},(function(){var t=this,a=t.$createElement,n=t._self._c||a;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"builders-domain-scheduling-task-duration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-task-duration"}},[t._v("#")]),t._v(" builders.domain.scheduling.task_duration")]),t._v(" "),n("div",{staticClass:"custom-block tip"},[n("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),n("skdecide-summary")],1),t._v(" "),n("h2",{attrs:{id:"simulatedtaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#simulatedtaskduration"}},[t._v("#")]),t._v(" SimulatedTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration requires sampling from a simulation.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Sample, store and return task duration for the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-2"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode.")]),t._v(" "),n("h2",{attrs:{id:"uncertainmultivariatetaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#uncertainmultivariatetaskduration"}},[t._v("#")]),t._v(" UncertainMultivariateTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration is uncertain and follows a know multivariate\ndistribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-3"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-3"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-2"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-4"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-4"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h2",{attrs:{id:"uncertainunivariatetaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#uncertainunivariatetaskduration"}},[t._v("#")]),t._v(" UncertainUnivariateTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration is uncertain and follows a know univariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-3"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-3"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-5"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-5"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-4"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-4"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the univariate Distribution of the duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-6"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-6"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying univariate distribution.")]),t._v(" "),n("h2",{attrs:{id:"uncertainboundedtaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#uncertainboundedtaskduration"}},[t._v("#")]),t._v(" UncertainBoundedTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration is known to be between a lower and upper bound\nand follows a known distribution between these bounds.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-5"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-5"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound"}},[t._v("#")]),t._v(" get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound"}},[t._v("#")]),t._v(" get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-7"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-7"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-6"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-6"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"DiscreteDistribution"}}}),t._v(" "),n("p",[t._v("Return the Distribution of the duration of the given task in the given mode.\nThe distribution returns values beween the defined lower and upper bounds.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-2"}},[t._v("#")]),t._v(" _get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-2"}},[t._v("#")]),t._v(" _get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-8"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-8"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying univariate bounded distribution.")]),t._v(" "),n("h2",{attrs:{id:"uniformboundedtaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#uniformboundedtaskduration"}},[t._v("#")]),t._v(" UniformBoundedTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration is known to be between a lower and upper bound\nand follows a uniform distribution between these bounds.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-7"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-7"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-3"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-3"}},[t._v("#")]),t._v(" get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-3"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-3"}},[t._v("#")]),t._v(" get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-9"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-9"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-8"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-8"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"DiscreteDistribution"}}}),t._v(" "),n("p",[t._v("Return the Distribution of the duration of the given task in the given mode.\nThe distribution is uniform between the defined lower and upper bounds.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-4"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-4"}},[t._v("#")]),t._v(" _get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-4"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-4"}},[t._v("#")]),t._v(" _get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-10"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-10"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying univariate uniform bounded distribution.")]),t._v(" "),n("h2",{attrs:{id:"enumerabletaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#enumerabletaskduration"}},[t._v("#")]),t._v(" EnumerableTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration for each task is enumerable.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-9"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-9"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-5"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-5"}},[t._v("#")]),t._v(" get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-5"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-5"}},[t._v("#")]),t._v(" get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-11"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-11"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-10"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-10"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"DiscreteDistribution"}}}),t._v(" "),n("p",[t._v("Return the Distribution of the duration of the given task in the given mode.\nas an Enumerable.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-6"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-6"}},[t._v("#")]),t._v(" _get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-6"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-6"}},[t._v("#")]),t._v(" _get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-12"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-12"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode.")]),t._v(" "),n("h2",{attrs:{id:"deterministictaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#deterministictaskduration"}},[t._v("#")]),t._v(" DeterministicTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task durations are known and deterministic.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration"}},[t._v("#")]),t._v(" get_task_duration "),n("Badge",{attrs:{text:"DeterministicTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the fixed deterministic task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-11"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-11"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-7"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-7"}},[t._v("#")]),t._v(" get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-7"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-7"}},[t._v("#")]),t._v(" get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-13"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-13"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-2"}},[t._v("#")]),t._v(" _get_task_duration "),n("Badge",{attrs:{text:"DeterministicTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the fixed deterministic task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-12"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-12"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}]}}}),t._v(" "),n("p",[t._v("Return the Distribution of the duration of the given task in the given mode.\nBecause the duration is deterministic, the distribution always returns the same duration.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-8"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-8"}},[t._v("#")]),t._v(" _get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-8"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-8"}},[t._v("#")]),t._v(" _get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-14"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-14"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode.")])],1)}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{560:function(t,a,n){"use strict";n.r(a);var e=n(38),i=Object(e.a)({},(function(){var t=this,a=t.$createElement,n=t._self._c||a;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"builders-domain-scheduling-task-duration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-task-duration"}},[t._v("#")]),t._v(" builders.domain.scheduling.task_duration")]),t._v(" "),n("div",{staticClass:"custom-block tip"},[n("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),n("skdecide-summary")],1),t._v(" "),n("h2",{attrs:{id:"simulatedtaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#simulatedtaskduration"}},[t._v("#")]),t._v(" SimulatedTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration requires sampling from a simulation.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Sample, store and return task duration for the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-2"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode.")]),t._v(" "),n("h2",{attrs:{id:"uncertainmultivariatetaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#uncertainmultivariatetaskduration"}},[t._v("#")]),t._v(" UncertainMultivariateTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration is uncertain and follows a know multivariate\ndistribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-3"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-3"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-2"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-4"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-4"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h2",{attrs:{id:"uncertainunivariatetaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#uncertainunivariatetaskduration"}},[t._v("#")]),t._v(" UncertainUnivariateTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration is uncertain and follows a know univariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-3"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-3"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-5"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-5"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-4"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-4"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the univariate Distribution of the duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-6"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-6"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying univariate distribution.")]),t._v(" "),n("h2",{attrs:{id:"uncertainboundedtaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#uncertainboundedtaskduration"}},[t._v("#")]),t._v(" UncertainBoundedTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration is known to be between a lower and upper bound\nand follows a known distribution between these bounds.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-5"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-5"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound"}},[t._v("#")]),t._v(" get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound"}},[t._v("#")]),t._v(" get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-7"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-7"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-6"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-6"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"DiscreteDistribution"}}}),t._v(" "),n("p",[t._v("Return the Distribution of the duration of the given task in the given mode.\nThe distribution returns values beween the defined lower and upper bounds.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-2"}},[t._v("#")]),t._v(" _get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-2"}},[t._v("#")]),t._v(" _get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-8"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-8"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying univariate bounded distribution.")]),t._v(" "),n("h2",{attrs:{id:"uniformboundedtaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#uniformboundedtaskduration"}},[t._v("#")]),t._v(" UniformBoundedTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration is known to be between a lower and upper bound\nand follows a uniform distribution between these bounds.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-7"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-7"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-3"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-3"}},[t._v("#")]),t._v(" get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-3"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-3"}},[t._v("#")]),t._v(" get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-9"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-9"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-8"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-8"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"DiscreteDistribution"}}}),t._v(" "),n("p",[t._v("Return the Distribution of the duration of the given task in the given mode.\nThe distribution is uniform between the defined lower and upper bounds.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-4"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-4"}},[t._v("#")]),t._v(" _get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-4"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-4"}},[t._v("#")]),t._v(" _get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-10"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-10"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying univariate uniform bounded distribution.")]),t._v(" "),n("h2",{attrs:{id:"enumerabletaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#enumerabletaskduration"}},[t._v("#")]),t._v(" EnumerableTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task duration for each task is enumerable.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-9"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-9"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-5"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-5"}},[t._v("#")]),t._v(" get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-5"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-5"}},[t._v("#")]),t._v(" get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-11"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-11"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-10"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-10"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"DiscreteDistribution"}}}),t._v(" "),n("p",[t._v("Return the Distribution of the duration of the given task in the given mode.\nas an Enumerable.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-6"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-6"}},[t._v("#")]),t._v(" _get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-6"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-6"}},[t._v("#")]),t._v(" _get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-12"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-12"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode.")]),t._v(" "),n("h2",{attrs:{id:"deterministictaskduration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#deterministictaskduration"}},[t._v("#")]),t._v(" DeterministicTaskDuration")]),t._v(" "),n("p",[t._v("A domain must inherit this class if the task durations are known and deterministic.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration"}},[t._v("#")]),t._v(" get_task_duration "),n("Badge",{attrs:{text:"DeterministicTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the fixed deterministic task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-11"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-11"}},[t._v("#")]),t._v(" get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}],return:"Distribution"}}}),t._v(" "),n("p",[t._v("Return the multivariate Distribution of the duration of the given task in the given mode.\nMultivariate seetings need to be provided.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-7"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-7"}},[t._v("#")]),t._v(" get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-7"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-7"}},[t._v("#")]),t._v(" get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-13"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-13"}},[t._v("#")]),t._v(" sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode,\nsampled from the underlying multiivariate distribution.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-2"}},[t._v("#")]),t._v(" _get_task_duration "),n("Badge",{attrs:{text:"DeterministicTaskDuration",type:"tip"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the fixed deterministic task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-distribution-12"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-distribution-12"}},[t._v("#")]),t._v(" _get_task_duration_distribution "),n("Badge",{attrs:{text:"UncertainMultivariateTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_distribution",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"},{name:"multivariate_settings",default:"None",annotation:"Optional[Dict[str, int]]"}]}}}),t._v(" "),n("p",[t._v("Return the Distribution of the duration of the given task in the given mode.\nBecause the duration is deterministic, the distribution always returns the same duration.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-lower-bound-8"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-lower-bound-8"}},[t._v("#")]),t._v(" _get_task_duration_lower_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_lower_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the lower bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"get-task-duration-upper-bound-8"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#get-task-duration-upper-bound-8"}},[t._v("#")]),t._v(" _get_task_duration_upper_bound "),n("Badge",{attrs:{text:"UncertainBoundedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_get_task_duration_upper_bound",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return the upper bound for the task duration of the given task in the given mode.")]),t._v(" "),n("h3",{attrs:{id:"sample-task-duration-14"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#sample-task-duration-14"}},[t._v("#")]),t._v(" _sample_task_duration "),n("Badge",{attrs:{text:"SimulatedTaskDuration",type:"warn"}})],1),t._v(" "),n("skdecide-signature",{attrs:{name:"_sample_task_duration",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"mode",default:"1",annotation:"Optional[int]"},{name:"progress_from",default:"0.0",annotation:"Optional[float]"}],return:"int"}}}),t._v(" "),n("p",[t._v("Return a task duration for the given task in the given mode.")])],1)}),[],!1,null,null,null);a.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/49.96621ac8.js b/assets/js/49.74f8be29.js similarity index 98% rename from assets/js/49.96621ac8.js rename to assets/js/49.74f8be29.js index bbd43bda19..9d0ed86b19 100644 --- a/assets/js/49.96621ac8.js +++ b/assets/js/49.74f8be29.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{560:function(t,a,s){"use strict";s.r(a);var e=s(38),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-task-progress"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-task-progress"}},[t._v("#")]),t._v(" builders.domain.scheduling.task_progress")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),s("skdecide-summary")],1),t._v(" "),s("h2",{attrs:{id:"customtaskprogress"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#customtaskprogress"}},[t._v("#")]),t._v(" CustomTaskProgress")]),t._v(" "),s("p",[t._v("A domain must inherit this class if the task progress is uncertain.")]),t._v(" "),s("h3",{attrs:{id:"get-task-progress"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress"}},[t._v("#")]),t._v(" get_task_progress "),s("Badge",{attrs:{text:"CustomTaskProgress",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),s("h4",{attrs:{id:"returns"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),s("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),s("h3",{attrs:{id:"get-task-progress-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-2"}},[t._v("#")]),t._v(" _get_task_progress "),s("Badge",{attrs:{text:"CustomTaskProgress",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),s("h4",{attrs:{id:"returns-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),s("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),s("h2",{attrs:{id:"deterministictaskprogress"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deterministictaskprogress"}},[t._v("#")]),t._v(" DeterministicTaskProgress")]),t._v(" "),s("p",[t._v("A domain must inherit this class if the task progress is deterministic and can be considered as linear\nover the duration of the task.")]),t._v(" "),s("h3",{attrs:{id:"get-task-progress-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-3"}},[t._v("#")]),t._v(" get_task_progress "),s("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),s("h4",{attrs:{id:"returns-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),s("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),s("h3",{attrs:{id:"get-task-progress-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-4"}},[t._v("#")]),t._v(" _get_task_progress "),s("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),s("h4",{attrs:{id:"returns-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),s("p",[t._v("The task progress (float) between t_from and t_to based on the task duration\nand assuming linear progress.")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{561:function(t,a,s){"use strict";s.r(a);var e=s(38),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"builders-domain-scheduling-task-progress"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-task-progress"}},[t._v("#")]),t._v(" builders.domain.scheduling.task_progress")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),s("skdecide-summary")],1),t._v(" "),s("h2",{attrs:{id:"customtaskprogress"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#customtaskprogress"}},[t._v("#")]),t._v(" CustomTaskProgress")]),t._v(" "),s("p",[t._v("A domain must inherit this class if the task progress is uncertain.")]),t._v(" "),s("h3",{attrs:{id:"get-task-progress"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress"}},[t._v("#")]),t._v(" get_task_progress "),s("Badge",{attrs:{text:"CustomTaskProgress",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),s("h4",{attrs:{id:"returns"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),s("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),s("h3",{attrs:{id:"get-task-progress-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-2"}},[t._v("#")]),t._v(" _get_task_progress "),s("Badge",{attrs:{text:"CustomTaskProgress",type:"tip"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),s("h4",{attrs:{id:"returns-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),s("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),s("h2",{attrs:{id:"deterministictaskprogress"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#deterministictaskprogress"}},[t._v("#")]),t._v(" DeterministicTaskProgress")]),t._v(" "),s("p",[t._v("A domain must inherit this class if the task progress is deterministic and can be considered as linear\nover the duration of the task.")]),t._v(" "),s("h3",{attrs:{id:"get-task-progress-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-3"}},[t._v("#")]),t._v(" get_task_progress "),s("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),s("h4",{attrs:{id:"returns-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),s("p",[t._v("The task progress (float) between t_from and t_to.")]),t._v(" "),s("h3",{attrs:{id:"get-task-progress-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#get-task-progress-4"}},[t._v("#")]),t._v(" _get_task_progress "),s("Badge",{attrs:{text:"CustomTaskProgress",type:"warn"}})],1),t._v(" "),s("skdecide-signature",{attrs:{name:"_get_task_progress",sig:{params:[{name:"self"},{name:"task",annotation:"int"},{name:"t_from",annotation:"int"},{name:"t_to",annotation:"int"},{name:"mode",annotation:"Optional[int]"},{name:"sampled_duration",default:"None",annotation:"Optional[int]"}],return:"float"}}}),t._v(" "),s("h4",{attrs:{id:"returns-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),s("p",[t._v("The task progress (float) between t_from and t_to based on the task duration\nand assuming linear progress.")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/50.a68becbd.js b/assets/js/50.cb4c3a02.js similarity index 99% rename from assets/js/50.a68becbd.js rename to assets/js/50.cb4c3a02.js index c7c0d88512..d4864667fc 100644 --- a/assets/js/50.a68becbd.js +++ b/assets/js/50.cb4c3a02.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{561:function(t,e,a){"use strict";a.r(e);var i=a(38),s=Object(i.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-time-lag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-time-lag"}},[t._v("#")]),t._v(" builders.domain.scheduling.time_lag")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"timelag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timelag"}},[t._v("#")]),t._v(" TimeLag")]),t._v(" "),a("p",[t._v("Defines a time lag with both a minimum time lag and maximum time lag.")]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"TimeLag",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"TimeLag",sig:{params:[{name:"minimum_time_lag"},{name:"maximum_time_lags"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"minimumonlytimelag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#minimumonlytimelag"}},[t._v("#")]),t._v(" MinimumOnlyTimeLag")]),t._v(" "),a("p",[t._v("Defines a minimum time lag.")]),t._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"MinimumOnlyTimeLag",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"MinimumOnlyTimeLag",sig:{params:[{name:"minimum_time_lag"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"maximumonlytimelag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maximumonlytimelag"}},[t._v("#")]),t._v(" MaximumOnlyTimeLag")]),t._v(" "),a("p",[t._v("Defines a maximum time lag.")]),t._v(" "),a("h3",{attrs:{id:"constructor-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"MaximumOnlyTimeLag",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"MaximumOnlyTimeLag",sig:{params:[{name:"maximum_time_lags"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"withtimelag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withtimelag"}},[t._v("#")]),t._v(" WithTimeLag")]),t._v(" "),a("p",[t._v("A domain must inherit this class if there are minimum and maximum time lags between some of its tasks.")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags"}},[t._v("#")]),t._v(" get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-2"}},[t._v("#")]),t._v(" _get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h2",{attrs:{id:"withouttimelag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withouttimelag"}},[t._v("#")]),t._v(" WithoutTimeLag")]),t._v(" "),a("p",[t._v("A domain must inherit this class if there is no required time lag between its tasks.")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-3"}},[t._v("#")]),t._v(" get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-4"}},[t._v("#")]),t._v(" _get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{562:function(t,e,a){"use strict";a.r(e);var i=a(38),s=Object(i.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-time-lag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-time-lag"}},[t._v("#")]),t._v(" builders.domain.scheduling.time_lag")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"timelag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timelag"}},[t._v("#")]),t._v(" TimeLag")]),t._v(" "),a("p",[t._v("Defines a time lag with both a minimum time lag and maximum time lag.")]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"TimeLag",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"TimeLag",sig:{params:[{name:"minimum_time_lag"},{name:"maximum_time_lags"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"minimumonlytimelag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#minimumonlytimelag"}},[t._v("#")]),t._v(" MinimumOnlyTimeLag")]),t._v(" "),a("p",[t._v("Defines a minimum time lag.")]),t._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"MinimumOnlyTimeLag",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"MinimumOnlyTimeLag",sig:{params:[{name:"minimum_time_lag"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"maximumonlytimelag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maximumonlytimelag"}},[t._v("#")]),t._v(" MaximumOnlyTimeLag")]),t._v(" "),a("p",[t._v("Defines a maximum time lag.")]),t._v(" "),a("h3",{attrs:{id:"constructor-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"MaximumOnlyTimeLag",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"MaximumOnlyTimeLag",sig:{params:[{name:"maximum_time_lags"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"withtimelag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withtimelag"}},[t._v("#")]),t._v(" WithTimeLag")]),t._v(" "),a("p",[t._v("A domain must inherit this class if there are minimum and maximum time lags between some of its tasks.")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags"}},[t._v("#")]),t._v(" get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-2"}},[t._v("#")]),t._v(" _get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h2",{attrs:{id:"withouttimelag"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withouttimelag"}},[t._v("#")]),t._v(" WithoutTimeLag")]),t._v(" "),a("p",[t._v("A domain must inherit this class if there is no required time lag between its tasks.")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-3"}},[t._v("#")]),t._v(" get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")]),t._v(" "),a("p",[t._v("e.g.\n{\n12:{\n15: TimeLag(5, 10),\n16: TimeLag(5, 20),\n17: MinimumOnlyTimeLag(5),\n18: MaximumOnlyTimeLag(15),\n}\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeLag objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-lags-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-lags-4"}},[t._v("#")]),t._v(" _get_time_lags "),a("Badge",{attrs:{text:"WithTimeLag",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_lags",sig:{params:[{name:"self"}],return:"Dict[int, Dict[int, TimeLag]]"}}}),t._v(" "),a("p",[t._v("Return nested dictionaries where the first key is the id of a task (int)\nand the second key is the id of another task (int).\nThe value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end\nof the first task to the start of the second task.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/51.ae376dc3.js b/assets/js/51.bb88bd59.js similarity index 99% rename from assets/js/51.ae376dc3.js rename to assets/js/51.bb88bd59.js index 978485cfb5..649c5e11a0 100644 --- a/assets/js/51.ae376dc3.js +++ b/assets/js/51.bb88bd59.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{562:function(t,e,a){"use strict";a.r(e);var i=a(38),n=Object(i.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-time-windows"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-time-windows"}},[t._v("#")]),t._v(" builders.domain.scheduling.time_windows")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"timewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timewindow"}},[t._v("#")]),t._v(" TimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with earliest start, latest start, earliest end and latest end only.")]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"TimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"TimeWindow",sig:{params:[{name:"earliest_start",annotation:"int"},{name:"latest_start",annotation:"int"},{name:"earliest_end",annotation:"int"},{name:"latest_end",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"classictimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#classictimewindow"}},[t._v("#")]),t._v(" ClassicTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with earliest start and latest end only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ClassicTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ClassicTimeWindow",sig:{params:[{name:"earliest_start",annotation:"int"},{name:"latest_end",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"startfromonlytimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#startfromonlytimewindow"}},[t._v("#")]),t._v(" StartFromOnlyTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with an earliest start only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"StartFromOnlyTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"StartFromOnlyTimeWindow",sig:{params:[{name:"earliest_start",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"startbeforeonlytimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#startbeforeonlytimewindow"}},[t._v("#")]),t._v(" StartBeforeOnlyTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with an latest start only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-4"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"StartBeforeOnlyTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"StartBeforeOnlyTimeWindow",sig:{params:[{name:"latest_start",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"endfromonlytimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endfromonlytimewindow"}},[t._v("#")]),t._v(" EndFromOnlyTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with an earliest end only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-5"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"EndFromOnlyTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"EndFromOnlyTimeWindow",sig:{params:[{name:"earliest_end",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"endbeforeonlytimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endbeforeonlytimewindow"}},[t._v("#")]),t._v(" EndBeforeOnlyTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with a latest end only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-6"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"EndBeforeOnlyTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"EndBeforeOnlyTimeWindow",sig:{params:[{name:"latest_end",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"starttimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#starttimewindow"}},[t._v("#")]),t._v(" StartTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with an earliest start and a latest start only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-7"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"StartTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"StartTimeWindow",sig:{params:[{name:"earliest_start",annotation:"int"},{name:"latest_start",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"endtimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endtimewindow"}},[t._v("#")]),t._v(" EndTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with an earliest end and a latest end only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-8"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"EndTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"EndTimeWindow",sig:{params:[{name:"earliest_end",annotation:"int"},{name:"latest_end",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"emptytimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#emptytimewindow"}},[t._v("#")]),t._v(" EmptyTimeWindow")]),t._v(" "),a("p",[t._v("Defines an empty time window.")]),t._v(" "),a("h3",{attrs:{id:"constructor-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-9"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"EmptyTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"EmptyTimeWindow",sig:{params:[{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"withtimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withtimewindow"}},[t._v("#")]),t._v(" WithTimeWindow")]),t._v(" "),a("p",[t._v("A domain must inherit this class if some tasks have time windows defined.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window"}},[t._v("#")]),t._v(" get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-2"}},[t._v("#")]),t._v(" _get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h2",{attrs:{id:"withouttimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withouttimewindow"}},[t._v("#")]),t._v(" WithoutTimeWindow")]),t._v(" "),a("p",[t._v("A domain must inherit this class if none of the tasks have restrictions on start times or end times.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-3"}},[t._v("#")]),t._v(" get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-4"}},[t._v("#")]),t._v(" _get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a dictionary of EmptyTimeWindow object.")]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")])],1)}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{563:function(t,e,a){"use strict";a.r(e);var i=a(38),n=Object(i.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-domain-scheduling-time-windows"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-scheduling-time-windows"}},[t._v("#")]),t._v(" builders.domain.scheduling.time_windows")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"timewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#timewindow"}},[t._v("#")]),t._v(" TimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with earliest start, latest start, earliest end and latest end only.")]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"TimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"TimeWindow",sig:{params:[{name:"earliest_start",annotation:"int"},{name:"latest_start",annotation:"int"},{name:"earliest_end",annotation:"int"},{name:"latest_end",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"classictimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#classictimewindow"}},[t._v("#")]),t._v(" ClassicTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with earliest start and latest end only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ClassicTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ClassicTimeWindow",sig:{params:[{name:"earliest_start",annotation:"int"},{name:"latest_end",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"startfromonlytimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#startfromonlytimewindow"}},[t._v("#")]),t._v(" StartFromOnlyTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with an earliest start only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"StartFromOnlyTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"StartFromOnlyTimeWindow",sig:{params:[{name:"earliest_start",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"startbeforeonlytimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#startbeforeonlytimewindow"}},[t._v("#")]),t._v(" StartBeforeOnlyTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with an latest start only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-4"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"StartBeforeOnlyTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"StartBeforeOnlyTimeWindow",sig:{params:[{name:"latest_start",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"endfromonlytimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endfromonlytimewindow"}},[t._v("#")]),t._v(" EndFromOnlyTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with an earliest end only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-5"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"EndFromOnlyTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"EndFromOnlyTimeWindow",sig:{params:[{name:"earliest_end",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"endbeforeonlytimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endbeforeonlytimewindow"}},[t._v("#")]),t._v(" EndBeforeOnlyTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with a latest end only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-6"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"EndBeforeOnlyTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"EndBeforeOnlyTimeWindow",sig:{params:[{name:"latest_end",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"starttimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#starttimewindow"}},[t._v("#")]),t._v(" StartTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with an earliest start and a latest start only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-7"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"StartTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"StartTimeWindow",sig:{params:[{name:"earliest_start",annotation:"int"},{name:"latest_start",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"endtimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#endtimewindow"}},[t._v("#")]),t._v(" EndTimeWindow")]),t._v(" "),a("p",[t._v("Defines a time window with an earliest end and a latest end only.")]),t._v(" "),a("h3",{attrs:{id:"constructor-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-8"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"EndTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"EndTimeWindow",sig:{params:[{name:"earliest_end",annotation:"int"},{name:"latest_end",annotation:"int"},{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"emptytimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#emptytimewindow"}},[t._v("#")]),t._v(" EmptyTimeWindow")]),t._v(" "),a("p",[t._v("Defines an empty time window.")]),t._v(" "),a("h3",{attrs:{id:"constructor-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-9"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"EmptyTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"EmptyTimeWindow",sig:{params:[{name:"max_horizon",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"withtimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withtimewindow"}},[t._v("#")]),t._v(" WithTimeWindow")]),t._v(" "),a("p",[t._v("A domain must inherit this class if some tasks have time windows defined.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window"}},[t._v("#")]),t._v(" get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-2"}},[t._v("#")]),t._v(" _get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h2",{attrs:{id:"withouttimewindow"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#withouttimewindow"}},[t._v("#")]),t._v(" WithoutTimeWindow")]),t._v(" "),a("p",[t._v("A domain must inherit this class if none of the tasks have restrictions on start times or end times.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-3"}},[t._v("#")]),t._v(" get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a TimeWindow object.\nNote that the max time horizon needs to be provided to the TimeWindow constructors\ne.g.\n{\n1: TimeWindow(10, 15, 20, 30, self.get_max_horizon())\n2: EmptyTimeWindow(self.get_max_horizon())\n3: EndTimeWindow(20, 25, self.get_max_horizon())\n4: EndBeforeOnlyTimeWindow(40, self.get_max_horizon())\n}")]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")]),t._v(" "),a("h3",{attrs:{id:"get-time-window-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-time-window-4"}},[t._v("#")]),t._v(" _get_time_window "),a("Badge",{attrs:{text:"WithTimeWindow",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_time_window",sig:{params:[{name:"self"}],return:"Dict[int, TimeWindow]"}}}),t._v(" "),a("p",[t._v("Return a dictionary where the key is the id of a task (int)\nand the value is a dictionary of EmptyTimeWindow object.")]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A dictionary of TimeWindow objects.")])],1)}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/52.4e12f13d.js b/assets/js/52.24ae6218.js similarity index 99% rename from assets/js/52.4e12f13d.js rename to assets/js/52.24ae6218.js index f36bc3c05d..2eeb497fef 100644 --- a/assets/js/52.4e12f13d.js +++ b/assets/js/52.24ae6218.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{563:function(a,e,t){"use strict";t.r(e);var s=t(38),r=Object(s.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"builders-domain-value"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-value"}},[a._v("#")]),a._v(" builders.domain.value")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("Domain specification")]),a._v(" "),t("skdecide-summary")],1),a._v(" "),t("h2",{attrs:{id:"rewards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rewards"}},[a._v("#")]),a._v(" Rewards")]),a._v(" "),t("p",[a._v("A domain must inherit this class if it sends rewards (positive and/or negative).")]),a._v(" "),t("h3",{attrs:{id:"check-value"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-value"}},[a._v("#")]),a._v(" check_value "),t("Badge",{attrs:{text:"Rewards",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check that a value is compliant with its reward specification.")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),a._v(" "),t("h4",{attrs:{id:"parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("value")]),a._v(": The value to check.")])]),a._v(" "),t("h4",{attrs:{id:"returns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if the value is compliant (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"check-value-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-value-2"}},[a._v("#")]),a._v(" _check_value "),t("Badge",{attrs:{text:"Rewards",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check that a value is compliant with its reward specification.")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),a._v(" "),t("h4",{attrs:{id:"parameters-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("value")]),a._v(": The value to check.")])]),a._v(" "),t("h4",{attrs:{id:"returns-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if the value is compliant (False otherwise).")]),a._v(" "),t("h2",{attrs:{id:"positivecosts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#positivecosts"}},[a._v("#")]),a._v(" PositiveCosts")]),a._v(" "),t("p",[a._v("A domain must inherit this class if it sends only positive costs (i.e. negative rewards).")]),a._v(" "),t("p",[a._v("Having only positive costs is a required assumption for certain solvers to work, such as classical planners.")]),a._v(" "),t("h3",{attrs:{id:"check-value-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-value-3"}},[a._v("#")]),a._v(" check_value "),t("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check that a value is compliant with its reward specification.")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),a._v(" "),t("h4",{attrs:{id:"parameters-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("value")]),a._v(": The value to check.")])]),a._v(" "),t("h4",{attrs:{id:"returns-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if the value is compliant (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"check-value-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-value-4"}},[a._v("#")]),a._v(" _check_value "),t("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check that a value is compliant with its cost specification (must be positive).")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("This function calls "),t("code",[a._v("PositiveCost._is_positive()")]),a._v(" to determine if a value is positive (can be overridden for\nadvanced value types).")])]),a._v(" "),t("h4",{attrs:{id:"parameters-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("value")]),a._v(": The value to check.")])]),a._v(" "),t("h4",{attrs:{id:"returns-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if the value is compliant (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"is-positive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#is-positive"}},[a._v("#")]),a._v(" _is_positive "),t("Badge",{attrs:{text:"PositiveCosts",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"_is_positive",sig:{params:[{name:"self"},{name:"cost",annotation:"D.T_value"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Determine if a value is positive (can be overridden for advanced value types).")]),a._v(" "),t("h4",{attrs:{id:"parameters-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("cost")]),a._v(": The cost to evaluate.")])]),a._v(" "),t("h4",{attrs:{id:"returns-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if the cost is positive (False otherwise).")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{564:function(a,e,t){"use strict";t.r(e);var s=t(38),r=Object(s.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"builders-domain-value"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#builders-domain-value"}},[a._v("#")]),a._v(" builders.domain.value")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("Domain specification")]),a._v(" "),t("skdecide-summary")],1),a._v(" "),t("h2",{attrs:{id:"rewards"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rewards"}},[a._v("#")]),a._v(" Rewards")]),a._v(" "),t("p",[a._v("A domain must inherit this class if it sends rewards (positive and/or negative).")]),a._v(" "),t("h3",{attrs:{id:"check-value"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-value"}},[a._v("#")]),a._v(" check_value "),t("Badge",{attrs:{text:"Rewards",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check that a value is compliant with its reward specification.")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),a._v(" "),t("h4",{attrs:{id:"parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("value")]),a._v(": The value to check.")])]),a._v(" "),t("h4",{attrs:{id:"returns"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if the value is compliant (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"check-value-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-value-2"}},[a._v("#")]),a._v(" _check_value "),t("Badge",{attrs:{text:"Rewards",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check that a value is compliant with its reward specification.")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),a._v(" "),t("h4",{attrs:{id:"parameters-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("value")]),a._v(": The value to check.")])]),a._v(" "),t("h4",{attrs:{id:"returns-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if the value is compliant (False otherwise).")]),a._v(" "),t("h2",{attrs:{id:"positivecosts"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#positivecosts"}},[a._v("#")]),a._v(" PositiveCosts")]),a._v(" "),t("p",[a._v("A domain must inherit this class if it sends only positive costs (i.e. negative rewards).")]),a._v(" "),t("p",[a._v("Having only positive costs is a required assumption for certain solvers to work, such as classical planners.")]),a._v(" "),t("h3",{attrs:{id:"check-value-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-value-3"}},[a._v("#")]),a._v(" check_value "),t("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check that a value is compliant with its reward specification.")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),a._v(" "),t("h4",{attrs:{id:"parameters-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("value")]),a._v(": The value to check.")])]),a._v(" "),t("h4",{attrs:{id:"returns-3"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if the value is compliant (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"check-value-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#check-value-4"}},[a._v("#")]),a._v(" _check_value "),t("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Check that a value is compliant with its cost specification (must be positive).")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("This function calls "),t("code",[a._v("PositiveCost._is_positive()")]),a._v(" to determine if a value is positive (can be overridden for\nadvanced value types).")])]),a._v(" "),t("h4",{attrs:{id:"parameters-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("value")]),a._v(": The value to check.")])]),a._v(" "),t("h4",{attrs:{id:"returns-4"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if the value is compliant (False otherwise).")]),a._v(" "),t("h3",{attrs:{id:"is-positive"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#is-positive"}},[a._v("#")]),a._v(" _is_positive "),t("Badge",{attrs:{text:"PositiveCosts",type:"tip"}})],1),a._v(" "),t("skdecide-signature",{attrs:{name:"_is_positive",sig:{params:[{name:"self"},{name:"cost",annotation:"D.T_value"}],return:"bool"}}}),a._v(" "),t("p",[a._v("Determine if a value is positive (can be overridden for advanced value types).")]),a._v(" "),t("h4",{attrs:{id:"parameters-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[a._v("#")]),a._v(" Parameters")]),a._v(" "),t("ul",[t("li",[t("strong",[a._v("cost")]),a._v(": The cost to evaluate.")])]),a._v(" "),t("h4",{attrs:{id:"returns-5"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[a._v("#")]),a._v(" Returns")]),a._v(" "),t("p",[a._v("True if the cost is positive (False otherwise).")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/53.bb7dbc2d.js b/assets/js/53.98908543.js similarity index 99% rename from assets/js/53.bb7dbc2d.js rename to assets/js/53.98908543.js index 4cda293d85..ef7e957d3f 100644 --- a/assets/js/53.bb7dbc2d.js +++ b/assets/js/53.98908543.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{564:function(t,Q,a){"use strict";a.r(Q);var T=a(38),r=Object(T.a)({},(function(){var t=this,Q=t.$createElement,a=t._self._c||Q;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-solver-assessability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-solver-assessability"}},[t._v("#")]),t._v(" builders.solver.assessability")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"utilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utilities"}},[t._v("#")]),t._v(" Utilities")]),t._v(" "),a("p",[t._v("A solver must inherit this class if it can provide the utility function (i.e. value function).")]),t._v(" "),a("h3",{attrs:{id:"get-utility"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-utility"}},[t._v("#")]),t._v(" get_utility "),a("Badge",{attrs:{text:"Utilities",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_utility",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy utility of the given observation.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"23.742ex",height:"3.301ex",viewBox:"0 -750 10493.9 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"56",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(856.2, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1309.3, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1698.3, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2167.3, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2834, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(3612, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4930.8, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(5208.8, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5967.8, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6356.8, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6873.8, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7262.8, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(7540.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8691.1, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(9746.9, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(10215.9, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state for the trajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy utility of the given observation.")]),t._v(" "),a("h3",{attrs:{id:"get-utility-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-utility-2"}},[t._v("#")]),t._v(" _get_utility "),a("Badge",{attrs:{text:"Utilities",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_utility",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy utility of the given observation.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"23.742ex",height:"3.301ex",viewBox:"0 -750 10493.9 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"56",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(856.2, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1309.3, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1698.3, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2167.3, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2834, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(3612, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4930.8, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(5208.8, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5967.8, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6356.8, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6873.8, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7262.8, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(7540.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8691.1, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(9746.9, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(10215.9, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state for the trajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy utility of the given observation.")]),t._v(" "),a("h2",{attrs:{id:"qvalues"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#qvalues"}},[t._v("#")]),t._v(" QValues")]),t._v(" "),a("p",[t._v("A solver must inherit this class if it can provide the Q function (i.e. action-value function).")]),t._v(" "),a("h3",{attrs:{id:"get-q-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-q-value"}},[t._v("#")]),t._v(" get_q_value "),a("Badge",{attrs:{text:"QValues",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_q_value",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy Q value of the given observation and action.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"33.127ex",height:"3.301ex",viewBox:"0 -750 14642.1 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"51",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(791, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1244.1, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1633.1, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2102.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2546.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3075.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3742.5, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(4520.5, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5839.2, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6117.2, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6876.2, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(7265.2, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7782.2, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8171.2, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(8449.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(9599.6, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(10655.4, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(11124.4, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(11569, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(12779.4, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(13835.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(14364.1, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v("/"),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"2.11ex",height:"1.372ex",viewBox:"0 -441 932.6 606.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state/action for the\ntrajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy Q value of the given observation and action.")]),t._v(" "),a("h3",{attrs:{id:"get-utility-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-utility-3"}},[t._v("#")]),t._v(" get_utility "),a("Badge",{attrs:{text:"Utilities",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_utility",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy utility of the given observation.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"23.742ex",height:"3.301ex",viewBox:"0 -750 10493.9 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"56",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(856.2, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1309.3, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1698.3, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2167.3, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2834, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(3612, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4930.8, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(5208.8, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5967.8, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6356.8, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6873.8, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7262.8, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(7540.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8691.1, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(9746.9, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(10215.9, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state for the trajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy utility of the given observation.")]),t._v(" "),a("h3",{attrs:{id:"get-q-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-q-value-2"}},[t._v("#")]),t._v(" _get_q_value "),a("Badge",{attrs:{text:"QValues",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_q_value",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy Q value of the given observation and action.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"33.127ex",height:"3.301ex",viewBox:"0 -750 14642.1 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"51",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(791, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1244.1, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1633.1, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2102.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2546.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3075.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3742.5, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(4520.5, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5839.2, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6117.2, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6876.2, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(7265.2, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7782.2, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8171.2, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(8449.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(9599.6, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(10655.4, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(11124.4, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(11569, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(12779.4, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(13835.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(14364.1, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v("/"),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"2.11ex",height:"1.372ex",viewBox:"0 -441 932.6 606.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state/action for the\ntrajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy Q value of the given observation and action.")]),t._v(" "),a("h3",{attrs:{id:"get-utility-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-utility-4"}},[t._v("#")]),t._v(" _get_utility "),a("Badge",{attrs:{text:"Utilities",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_utility",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy utility of the given observation.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"23.742ex",height:"3.301ex",viewBox:"0 -750 10493.9 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"56",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(856.2, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1309.3, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1698.3, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2167.3, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2834, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(3612, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4930.8, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(5208.8, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5967.8, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6356.8, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6873.8, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7262.8, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(7540.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8691.1, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(9746.9, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(10215.9, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state for the trajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy utility of the given observation.")])],1)}),[],!1,null,null,null);Q.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{565:function(t,Q,a){"use strict";a.r(Q);var T=a(38),r=Object(T.a)({},(function(){var t=this,Q=t.$createElement,a=t._self._c||Q;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-solver-assessability"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-solver-assessability"}},[t._v("#")]),t._v(" builders.solver.assessability")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"utilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#utilities"}},[t._v("#")]),t._v(" Utilities")]),t._v(" "),a("p",[t._v("A solver must inherit this class if it can provide the utility function (i.e. value function).")]),t._v(" "),a("h3",{attrs:{id:"get-utility"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-utility"}},[t._v("#")]),t._v(" get_utility "),a("Badge",{attrs:{text:"Utilities",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_utility",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy utility of the given observation.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"23.742ex",height:"3.301ex",viewBox:"0 -750 10493.9 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"56",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(856.2, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1309.3, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1698.3, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2167.3, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2834, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(3612, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4930.8, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(5208.8, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5967.8, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6356.8, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6873.8, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7262.8, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(7540.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8691.1, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(9746.9, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(10215.9, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state for the trajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy utility of the given observation.")]),t._v(" "),a("h3",{attrs:{id:"get-utility-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-utility-2"}},[t._v("#")]),t._v(" _get_utility "),a("Badge",{attrs:{text:"Utilities",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_utility",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy utility of the given observation.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"23.742ex",height:"3.301ex",viewBox:"0 -750 10493.9 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"56",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(856.2, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1309.3, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1698.3, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2167.3, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2834, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(3612, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4930.8, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(5208.8, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5967.8, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6356.8, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6873.8, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7262.8, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(7540.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8691.1, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(9746.9, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(10215.9, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state for the trajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy utility of the given observation.")]),t._v(" "),a("h2",{attrs:{id:"qvalues"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#qvalues"}},[t._v("#")]),t._v(" QValues")]),t._v(" "),a("p",[t._v("A solver must inherit this class if it can provide the Q function (i.e. action-value function).")]),t._v(" "),a("h3",{attrs:{id:"get-q-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-q-value"}},[t._v("#")]),t._v(" get_q_value "),a("Badge",{attrs:{text:"QValues",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_q_value",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy Q value of the given observation and action.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"33.127ex",height:"3.301ex",viewBox:"0 -750 14642.1 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"51",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(791, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1244.1, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1633.1, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2102.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2546.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3075.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3742.5, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(4520.5, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5839.2, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6117.2, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6876.2, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(7265.2, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7782.2, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8171.2, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(8449.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(9599.6, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(10655.4, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(11124.4, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(11569, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(12779.4, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(13835.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(14364.1, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v("/"),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"2.11ex",height:"1.372ex",viewBox:"0 -441 932.6 606.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state/action for the\ntrajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy Q value of the given observation and action.")]),t._v(" "),a("h3",{attrs:{id:"get-utility-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-utility-3"}},[t._v("#")]),t._v(" get_utility "),a("Badge",{attrs:{text:"Utilities",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_utility",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy utility of the given observation.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"23.742ex",height:"3.301ex",viewBox:"0 -750 10493.9 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"56",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(856.2, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1309.3, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1698.3, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2167.3, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2834, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(3612, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4930.8, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(5208.8, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5967.8, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6356.8, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6873.8, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7262.8, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(7540.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8691.1, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(9746.9, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(10215.9, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state for the trajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy utility of the given observation.")]),t._v(" "),a("h3",{attrs:{id:"get-q-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-q-value-2"}},[t._v("#")]),t._v(" _get_q_value "),a("Badge",{attrs:{text:"QValues",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_q_value",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy Q value of the given observation and action.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"33.127ex",height:"3.301ex",viewBox:"0 -750 14642.1 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"51",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(791, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1244.1, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1633.1, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2102.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2546.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3075.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3742.5, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(4520.5, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5839.2, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6117.2, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6876.2, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(7265.2, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7782.2, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8171.2, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(8449.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(9599.6, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(10655.4, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(11124.4, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(11569, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(12779.4, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(13835.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(14364.1, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v("/"),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"2.11ex",height:"1.372ex",viewBox:"0 -441 932.6 606.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state/action for the\ntrajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy Q value of the given observation and action.")]),t._v(" "),a("h3",{attrs:{id:"get-utility-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-utility-4"}},[t._v("#")]),t._v(" _get_utility "),a("Badge",{attrs:{text:"Utilities",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_utility",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_value"}}}),t._v(" "),a("p",[t._v("Get the estimated on-policy utility of the given observation.")]),t._v(" "),a("p",[t._v("In mathematical terms, for a fully observable domain, this function estimates:\n")]),a("p",[a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG",display:"true"}},[a("svg",{staticStyle:{"vertical-align":"-1.605ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"23.742ex",height:"3.301ex",viewBox:"0 -750 10493.9 1459.2"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"56",d:"M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(856.2, 413) scale(0.707)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1309.3, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1698.3, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2167.3, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2834, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"munder",transform:"translate(3612, 0)"}},[a("g",{attrs:{"data-mml-node":"TeXAtom",transform:"translate(325.9, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"45",d:"M12 666Q12 675 24 683H582Q590 680 593 672V588Q593 514 591 502T575 490Q567 490 563 495T555 517Q552 556 517 590Q486 623 445 634T340 648H282Q266 636 264 620T260 492V370H277Q329 375 358 391T404 439Q420 480 420 506Q420 529 436 529Q445 529 451 521Q455 517 455 361Q455 333 455 298T456 253Q456 217 453 207T437 197Q420 196 420 217Q420 240 406 270Q377 328 284 335H260V201Q261 174 261 134Q262 73 264 61T278 38Q281 36 282 35H331Q400 35 449 50Q571 93 602 179Q605 203 622 203Q629 203 634 197T640 183Q638 181 624 95T604 3L600 -1H24Q12 5 12 16Q12 35 51 35Q92 38 97 52Q102 60 102 341T97 632Q91 645 51 648Q12 648 12 666ZM137 341Q137 131 136 89T130 37Q129 36 129 35H235Q233 41 231 48L226 61V623L231 635L235 648H129Q132 641 133 638T135 603T137 517T137 341ZM557 603V648H504Q504 646 515 639Q527 634 542 619L557 603ZM420 317V397L406 383Q394 370 380 363L366 355Q373 350 382 346Q400 333 409 328L420 317ZM582 61L586 88Q585 88 582 83Q557 61 526 46L511 37L542 35H577Q577 36 578 39T580 49T582 61Z"}})])]),a("g",{attrs:{"data-mml-node":"mrow",transform:"translate(0, -600) scale(0.707)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(517, 0)"}},[a("path",{attrs:{"data-c":"223C",d:"M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1295, 0)"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4930.8, 0)"}},[a("path",{attrs:{"data-c":"5B",d:"M118 -250V750H255V710H158V-210H255V-250H118Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(5208.8, 0)"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5967.8, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(6356.8, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(6873.8, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7262.8, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(7540.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8691.1, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(9746.9, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(10215.9, 0)"}},[a("path",{attrs:{"data-c":"5D",d:"M22 710V750H159V-250H22V-210H119V710H22Z"}})])])])])])],1),t._v("\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.025ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.29ex",height:"1ex",viewBox:"0 -431 570 442"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C0",d:"M132 -11Q98 -11 98 22V33L111 61Q186 219 220 334L228 358H196Q158 358 142 355T103 336Q92 329 81 318T62 297T53 285Q51 284 38 284Q19 284 19 294Q19 300 38 329T93 391T164 429Q171 431 389 431Q549 431 553 430Q573 423 573 402Q573 371 541 360Q535 358 472 358H408L405 341Q393 269 393 222Q393 170 402 129T421 65T431 37Q431 20 417 5T381 -10Q370 -10 363 -7T347 17T331 77Q330 86 330 121Q330 170 339 226T357 318T367 358H269L268 354Q268 351 249 275T206 114T175 17Q164 -11 132 -11Z"}})])])])])]),t._v(" is the current policy, any "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"20.791ex",height:"2.262ex",viewBox:"0 -750 9189.4 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(794.8, 0)"}},[a("path",{attrs:{"data-c":"3D",d:"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1850.6, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(2239.6, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3112.1, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(3556.8, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(4489.3, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(4934, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(5806.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"msub",transform:"translate(6251.2, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(529, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7183.8, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(7628.4, 0)"}},[a("path",{attrs:{"data-c":"22EF",d:"M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250ZM525 250Q525 274 542 292T585 310Q609 310 627 294T646 251Q646 226 629 208T586 190T543 207T525 250ZM972 250Q972 274 989 292T1032 310Q1056 310 1074 294T1093 251Q1093 226 1076 208T1033 190T990 207T972 250Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(8800.4, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" represents a trajectory sampled from\nthe policy, "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"4.647ex",height:"2.262ex",viewBox:"0 -750 2054 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"52",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(759, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1148, 0)"}},[a("path",{attrs:{"data-c":"3C4",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1665, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(" is the return (cumulative reward) and "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.375ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.974ex",height:"1.375ex",viewBox:"0 -442 872.6 607.6"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msub"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mn",transform:"translate(469, -150) scale(0.707)"}},[a("path",{attrs:{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"}})])])])])])]),t._v(" the initial state for the trajectories."),a("p"),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The estimated on-policy utility of the given observation.")])],1)}),[],!1,null,null,null);Q.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/54.47310ab3.js b/assets/js/54.b77ef2b6.js similarity index 98% rename from assets/js/54.47310ab3.js rename to assets/js/54.b77ef2b6.js index ce432eae74..057ea1f3d4 100644 --- a/assets/js/54.47310ab3.js +++ b/assets/js/54.b77ef2b6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{565:function(e,a,t){"use strict";t.r(a);var r=t(38),s=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"builders-solver-parallelability"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#builders-solver-parallelability"}},[e._v("#")]),e._v(" builders.solver.parallelability")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),t("skdecide-summary")],1),e._v(" "),t("h2",{attrs:{id:"parallelsolver"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parallelsolver"}},[e._v("#")]),e._v(" ParallelSolver")]),e._v(" "),t("p",[e._v("A solver must inherit this class if it wants to call several cloned parallel domains in separate concurrent processes.\nThe solver is meant to be called either within a 'with' context statement, or to be cleaned up using the close() method.")]),e._v(" "),t("h3",{attrs:{id:"constructor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[e._v("#")]),e._v(" Constructor "),t("Badge",{attrs:{text:"ParallelSolver",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"ParallelSolver",sig:{params:[{name:"domain_factory",annotation:"Callable[[], Domain]"},{name:"parallel",default:"False",annotation:"bool"},{name:"shared_memory_proxy",default:"None"}]}}}),e._v(" "),t("p",[e._v("Creates a parallelizable solver")]),e._v(" "),t("h4",{attrs:{id:"parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),e._v(" "),t("li",[t("strong",[e._v("parallel")]),e._v(": True if the solver is run in parallel mode.")]),e._v(" "),t("li",[t("strong",[e._v("shared_memory_proxy")]),e._v(": Shared memory proxy to use if not None, otherwise run piped parallel domains.")])]),e._v(" "),t("h3",{attrs:{id:"call-domain-method"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#call-domain-method"}},[e._v("#")]),e._v(" call_domain_method "),t("Badge",{attrs:{text:"ParallelSolver",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"call_domain_method",sig:{params:[{name:"self"},{name:"name"},{name:"*args"}]}}}),e._v(" "),t("p",[e._v("Calls a parallel domain's method.\nThis is the only way to get a domain method for a parallel domain.")]),e._v(" "),t("h3",{attrs:{id:"close"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#close"}},[e._v("#")]),e._v(" close "),t("Badge",{attrs:{text:"ParallelSolver",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"close",sig:{params:[{name:"self"}]}}}),e._v(" "),t("p",[e._v("Joins the parallel domains' processes.\nNot calling this method (or not using the 'with' context statement)\nresults in the solver forever waiting for the domain processes to exit.")]),e._v(" "),t("h3",{attrs:{id:"get-domain"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-domain"}},[e._v("#")]),e._v(" get_domain "),t("Badge",{attrs:{text:"ParallelSolver",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_domain",sig:{params:[{name:"self"}]}}}),e._v(" "),t("p",[e._v("Returns the domain, optionally creating a parallel domain if not already created.")]),e._v(" "),t("h3",{attrs:{id:"initialize"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#initialize"}},[e._v("#")]),e._v(" _initialize "),t("Badge",{attrs:{text:"ParallelSolver",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_initialize",sig:{params:[{name:"self"}]}}}),e._v(" "),t("p",[e._v("Launches the parallel domains.\nThis method requires to have previously recorded the self._domain_factory (e.g. after calling _init_solve),\nthe set of lambda functions passed to the solver's constructor (e.g. heuristic lambda for heuristic-based solvers),\nand whether the parallel domain jobs should notify their status via the IPC protocol (required when interacting with\nother programming languages like C++)")])],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{566:function(e,a,t){"use strict";t.r(a);var r=t(38),s=Object(r.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"builders-solver-parallelability"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#builders-solver-parallelability"}},[e._v("#")]),e._v(" builders.solver.parallelability")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),t("skdecide-summary")],1),e._v(" "),t("h2",{attrs:{id:"parallelsolver"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parallelsolver"}},[e._v("#")]),e._v(" ParallelSolver")]),e._v(" "),t("p",[e._v("A solver must inherit this class if it wants to call several cloned parallel domains in separate concurrent processes.\nThe solver is meant to be called either within a 'with' context statement, or to be cleaned up using the close() method.")]),e._v(" "),t("h3",{attrs:{id:"constructor"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[e._v("#")]),e._v(" Constructor "),t("Badge",{attrs:{text:"ParallelSolver",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"ParallelSolver",sig:{params:[{name:"domain_factory",annotation:"Callable[[], Domain]"},{name:"parallel",default:"False",annotation:"bool"},{name:"shared_memory_proxy",default:"None"}]}}}),e._v(" "),t("p",[e._v("Creates a parallelizable solver")]),e._v(" "),t("h4",{attrs:{id:"parameters"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[e._v("#")]),e._v(" Parameters")]),e._v(" "),t("ul",[t("li",[t("strong",[e._v("domain_factory")]),e._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),e._v(" "),t("li",[t("strong",[e._v("parallel")]),e._v(": True if the solver is run in parallel mode.")]),e._v(" "),t("li",[t("strong",[e._v("shared_memory_proxy")]),e._v(": Shared memory proxy to use if not None, otherwise run piped parallel domains.")])]),e._v(" "),t("h3",{attrs:{id:"call-domain-method"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#call-domain-method"}},[e._v("#")]),e._v(" call_domain_method "),t("Badge",{attrs:{text:"ParallelSolver",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"call_domain_method",sig:{params:[{name:"self"},{name:"name"},{name:"*args"}]}}}),e._v(" "),t("p",[e._v("Calls a parallel domain's method.\nThis is the only way to get a domain method for a parallel domain.")]),e._v(" "),t("h3",{attrs:{id:"close"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#close"}},[e._v("#")]),e._v(" close "),t("Badge",{attrs:{text:"ParallelSolver",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"close",sig:{params:[{name:"self"}]}}}),e._v(" "),t("p",[e._v("Joins the parallel domains' processes.\nNot calling this method (or not using the 'with' context statement)\nresults in the solver forever waiting for the domain processes to exit.")]),e._v(" "),t("h3",{attrs:{id:"get-domain"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#get-domain"}},[e._v("#")]),e._v(" get_domain "),t("Badge",{attrs:{text:"ParallelSolver",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"get_domain",sig:{params:[{name:"self"}]}}}),e._v(" "),t("p",[e._v("Returns the domain, optionally creating a parallel domain if not already created.")]),e._v(" "),t("h3",{attrs:{id:"initialize"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#initialize"}},[e._v("#")]),e._v(" _initialize "),t("Badge",{attrs:{text:"ParallelSolver",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_initialize",sig:{params:[{name:"self"}]}}}),e._v(" "),t("p",[e._v("Launches the parallel domains.\nThis method requires to have previously recorded the self._domain_factory (e.g. after calling _init_solve),\nthe set of lambda functions passed to the solver's constructor (e.g. heuristic lambda for heuristic-based solvers),\nand whether the parallel domain jobs should notify their status via the IPC protocol (required when interacting with\nother programming languages like C++)")])],1)}),[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/55.045dc9c8.js b/assets/js/55.f0b608fb.js similarity index 99% rename from assets/js/55.045dc9c8.js rename to assets/js/55.f0b608fb.js index ddd5031af4..4a5196b888 100644 --- a/assets/js/55.045dc9c8.js +++ b/assets/js/55.f0b608fb.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{566:function(t,e,a){"use strict";a.r(e);var r=a(38),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-solver-policy"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-solver-policy"}},[t._v("#")]),t._v(" builders.solver.policy")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"policies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#policies"}},[t._v("#")]),t._v(" Policies")]),t._v(" "),a("p",[t._v("A solver must inherit this class if it computes a stochastic policy as part of the solving process.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for"}},[t._v("#")]),t._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action"}},[t._v("#")]),t._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-2"}},[t._v("#")]),t._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-2"}},[t._v("#")]),t._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")]),t._v(" "),a("h2",{attrs:{id:"uncertainpolicies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uncertainpolicies"}},[t._v("#")]),t._v(" UncertainPolicies")]),t._v(" "),a("p",[t._v("A solver must inherit this class if it computes a stochastic policy (providing next action distribution\nexplicitly) as part of the solving process.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution"}},[t._v("#")]),t._v(" get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),t._v(" "),a("p",[t._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probabilistic distribution of next action.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-3"}},[t._v("#")]),t._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-3"}},[t._v("#")]),t._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution-2"}},[t._v("#")]),t._v(" _get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),t._v(" "),a("p",[t._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probabilistic distribution of next action.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-4"}},[t._v("#")]),t._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-4"}},[t._v("#")]),t._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")]),t._v(" "),a("h2",{attrs:{id:"deterministicpolicies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicpolicies"}},[t._v("#")]),t._v(" DeterministicPolicies")]),t._v(" "),a("p",[t._v("A solver must inherit this class if it computes a deterministic policy as part of the solving process.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action"}},[t._v("#")]),t._v(" get_next_action "),a("Badge",{attrs:{text:"DeterministicPolicies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the next deterministic action (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which next action is requested.")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The next deterministic action.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution-3"}},[t._v("#")]),t._v(" get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),t._v(" "),a("p",[t._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probabilistic distribution of next action.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-5"}},[t._v("#")]),t._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-5"}},[t._v("#")]),t._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-2"}},[t._v("#")]),t._v(" _get_next_action "),a("Badge",{attrs:{text:"DeterministicPolicies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the next deterministic action (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which next action is requested.")])]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The next deterministic action.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution-4"}},[t._v("#")]),t._v(" _get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),t._v(" "),a("p",[t._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probabilistic distribution of next action.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-6"}},[t._v("#")]),t._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-6"}},[t._v("#")]),t._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{567:function(t,e,a){"use strict";a.r(e);var r=a(38),s=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"builders-solver-policy"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#builders-solver-policy"}},[t._v("#")]),t._v(" builders.solver.policy")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"policies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#policies"}},[t._v("#")]),t._v(" Policies")]),t._v(" "),a("p",[t._v("A solver must inherit this class if it computes a stochastic policy as part of the solving process.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for"}},[t._v("#")]),t._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action"}},[t._v("#")]),t._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-2"}},[t._v("#")]),t._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-2"}},[t._v("#")]),t._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")]),t._v(" "),a("h2",{attrs:{id:"uncertainpolicies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#uncertainpolicies"}},[t._v("#")]),t._v(" UncertainPolicies")]),t._v(" "),a("p",[t._v("A solver must inherit this class if it computes a stochastic policy (providing next action distribution\nexplicitly) as part of the solving process.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution"}},[t._v("#")]),t._v(" get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),t._v(" "),a("p",[t._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probabilistic distribution of next action.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-3"}},[t._v("#")]),t._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-3"}},[t._v("#")]),t._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution-2"}},[t._v("#")]),t._v(" _get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),t._v(" "),a("p",[t._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probabilistic distribution of next action.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-4"}},[t._v("#")]),t._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-4"}},[t._v("#")]),t._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")]),t._v(" "),a("h2",{attrs:{id:"deterministicpolicies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicpolicies"}},[t._v("#")]),t._v(" DeterministicPolicies")]),t._v(" "),a("p",[t._v("A solver must inherit this class if it computes a deterministic policy as part of the solving process.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action"}},[t._v("#")]),t._v(" get_next_action "),a("Badge",{attrs:{text:"DeterministicPolicies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the next deterministic action (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which next action is requested.")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The next deterministic action.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution-3"}},[t._v("#")]),t._v(" get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),t._v(" "),a("p",[t._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probabilistic distribution of next action.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-5"}},[t._v("#")]),t._v(" is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-5"}},[t._v("#")]),t._v(" sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-2"}},[t._v("#")]),t._v(" _get_next_action "),a("Badge",{attrs:{text:"DeterministicPolicies",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the next deterministic action (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which next action is requested.")])]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The next deterministic action.")]),t._v(" "),a("h3",{attrs:{id:"get-next-action-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-action-distribution-4"}},[t._v("#")]),t._v(" _get_next_action_distribution "),a("Badge",{attrs:{text:"UncertainPolicies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_action_distribution",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"}}}),t._v(" "),a("p",[t._v("Get the probabilistic distribution of next action for the given observation (from the solver's current\npolicy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probabilistic distribution of next action.")]),t._v(" "),a("h3",{attrs:{id:"is-policy-defined-for-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-policy-defined-for-6"}},[t._v("#")]),t._v(" _is_policy_defined_for "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_policy_defined_for",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether the solver's current policy is defined for the given observation.")]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the policy is defined for the given observation memory (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-action-6"}},[t._v("#")]),t._v(" _sample_action "),a("Badge",{attrs:{text:"Policies",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample_action",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_concurrency[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Sample an action for the given observation (from the solver's current policy).")]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation for which an action must be sampled.")])]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled action.")])],1)}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/56.dbc4c9c6.js b/assets/js/56.efea09fa.js similarity index 98% rename from assets/js/56.dbc4c9c6.js rename to assets/js/56.efea09fa.js index e4b8118102..6af90b79a2 100644 --- a/assets/js/56.dbc4c9c6.js +++ b/assets/js/56.efea09fa.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{567:function(t,a,e){"use strict";e.r(a);var s=e(38),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"builders-solver-restorability"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#builders-solver-restorability"}},[t._v("#")]),t._v(" builders.solver.restorability")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"restorable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#restorable"}},[t._v("#")]),t._v(" Restorable")]),t._v(" "),e("p",[t._v("A solver must inherit this class if its state can be saved and reloaded (to continue computation later on or\nreuse its solution).")]),t._v(" "),e("h3",{attrs:{id:"load"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#load"}},[t._v("#")]),t._v(" load "),e("Badge",{attrs:{text:"Restorable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),t._v(" "),e("p",[t._v("Restore the solver state from given path.")]),t._v(" "),e("h4",{attrs:{id:"parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("path")]),t._v(": The path where the solver state was saved.")]),t._v(" "),e("li",[e("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),t._v(" "),e("h3",{attrs:{id:"save"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" save "),e("Badge",{attrs:{text:"Restorable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),t._v(" "),e("p",[t._v("Save the solver state to given path.")]),t._v(" "),e("h4",{attrs:{id:"parameters-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("path")]),t._v(": The path to store the saved state.")])]),t._v(" "),e("h3",{attrs:{id:"load-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#load-2"}},[t._v("#")]),t._v(" _load "),e("Badge",{attrs:{text:"Restorable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),t._v(" "),e("p",[t._v("Restore the solver state from given path.")]),t._v(" "),e("h4",{attrs:{id:"parameters-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("path")]),t._v(": The path where the solver state was saved.")]),t._v(" "),e("li",[e("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),t._v(" "),e("h3",{attrs:{id:"save-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#save-2"}},[t._v("#")]),t._v(" _save "),e("Badge",{attrs:{text:"Restorable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),t._v(" "),e("p",[t._v("Save the solver state to given path.")]),t._v(" "),e("h4",{attrs:{id:"parameters-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("path")]),t._v(": The path to store the saved state.")])])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{568:function(t,a,e){"use strict";e.r(a);var s=e(38),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"builders-solver-restorability"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#builders-solver-restorability"}},[t._v("#")]),t._v(" builders.solver.restorability")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"restorable"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#restorable"}},[t._v("#")]),t._v(" Restorable")]),t._v(" "),e("p",[t._v("A solver must inherit this class if its state can be saved and reloaded (to continue computation later on or\nreuse its solution).")]),t._v(" "),e("h3",{attrs:{id:"load"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#load"}},[t._v("#")]),t._v(" load "),e("Badge",{attrs:{text:"Restorable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),t._v(" "),e("p",[t._v("Restore the solver state from given path.")]),t._v(" "),e("h4",{attrs:{id:"parameters"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("path")]),t._v(": The path where the solver state was saved.")]),t._v(" "),e("li",[e("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),t._v(" "),e("h3",{attrs:{id:"save"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#save"}},[t._v("#")]),t._v(" save "),e("Badge",{attrs:{text:"Restorable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),t._v(" "),e("p",[t._v("Save the solver state to given path.")]),t._v(" "),e("h4",{attrs:{id:"parameters-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("path")]),t._v(": The path to store the saved state.")])]),t._v(" "),e("h3",{attrs:{id:"load-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#load-2"}},[t._v("#")]),t._v(" _load "),e("Badge",{attrs:{text:"Restorable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_load",sig:{params:[{name:"self"},{name:"path",annotation:"str"},{name:"domain_factory",annotation:"Callable[[], D]"}],return:"None"}}}),t._v(" "),e("p",[t._v("Restore the solver state from given path.")]),t._v(" "),e("h4",{attrs:{id:"parameters-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("path")]),t._v(": The path where the solver state was saved.")]),t._v(" "),e("li",[e("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (useful in some implementations).")])]),t._v(" "),e("h3",{attrs:{id:"save-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#save-2"}},[t._v("#")]),t._v(" _save "),e("Badge",{attrs:{text:"Restorable",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_save",sig:{params:[{name:"self"},{name:"path",annotation:"str"}],return:"None"}}}),t._v(" "),e("p",[t._v("Save the solver state to given path.")]),t._v(" "),e("h4",{attrs:{id:"parameters-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),e("ul",[e("li",[e("strong",[t._v("path")]),t._v(": The path to store the saved state.")])])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/57.5e1551a4.js b/assets/js/57.02c2f8da.js similarity index 99% rename from assets/js/57.5e1551a4.js rename to assets/js/57.02c2f8da.js index d395db2d41..34ac8a7068 100644 --- a/assets/js/57.5e1551a4.js +++ b/assets/js/57.02c2f8da.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{568:function(t,e,a){"use strict";a.r(e);var s=a(38),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"core"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#core"}},[t._v("#")]),t._v(" core")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#space"}},[t._v("#")]),t._v(" Space")]),t._v(" "),a("p",[t._v("A space representing a finite or infinite set.")]),t._v(" "),a("p",[t._v("This class (or any of its descendant) is typically used to specify action, observation or goal spaces.")]),t._v(" "),a("h3",{attrs:{id:"contains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h2",{attrs:{id:"implicitspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implicitspace"}},[t._v("#")]),t._v(" ImplicitSpace")]),t._v(" "),a("p",[t._v("A space formalized implicitly, i.e. by a black-box contains() function.")]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ImplicitSpace",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ImplicitSpace",sig:{params:[{name:"contains_function",annotation:"Callable[[T], bool]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize ImplicitSpace.")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("contains_function")]),t._v(": The contains() function to use.")])]),t._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[t._v("my_space "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ImplicitSpace"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("lambda")]),t._v(" x"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" x"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'position'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"contains-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains-2"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h2",{attrs:{id:"enumerablespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enumerablespace"}},[t._v("#")]),t._v(" EnumerableSpace")]),t._v(" "),a("p",[t._v("A space which elements can be enumerated.")]),t._v(" "),a("h3",{attrs:{id:"contains-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains-3"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-elements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-elements"}},[t._v("#")]),t._v(" get_elements "),a("Badge",{attrs:{text:"EnumerableSpace",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_elements",sig:{params:[{name:"self"}],return:"Iterable[T]"}}}),t._v(" "),a("p",[t._v("Get the elements of this space.")]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The elements of this space.")]),t._v(" "),a("h2",{attrs:{id:"emptyspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#emptyspace"}},[t._v("#")]),t._v(" EmptySpace")]),t._v(" "),a("p",[t._v("An (enumerable) empty space.")]),t._v(" "),a("h3",{attrs:{id:"contains-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains-4"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-elements-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-elements-2"}},[t._v("#")]),t._v(" get_elements "),a("Badge",{attrs:{text:"EnumerableSpace",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_elements",sig:{params:[{name:"self"}],return:"Iterable[T]"}}}),t._v(" "),a("p",[t._v("Get the elements of this space.")]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The elements of this space.")]),t._v(" "),a("h2",{attrs:{id:"samplablespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#samplablespace"}},[t._v("#")]),t._v(" SamplableSpace")]),t._v(" "),a("p",[t._v("A space which can be sampled (uniformly randomly).")]),t._v(" "),a("h3",{attrs:{id:"contains-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains-5"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"SamplableSpace",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Uniformly randomly sample a random element of this space.")]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled element.")]),t._v(" "),a("h2",{attrs:{id:"serializablespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#serializablespace"}},[t._v("#")]),t._v(" SerializableSpace")]),t._v(" "),a("p",[t._v("A space which can be serialized (to/from JSON).")]),t._v(" "),a("h3",{attrs:{id:"contains-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains-6"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"from-jsonable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable"}},[t._v("#")]),t._v(" from_jsonable "),a("Badge",{attrs:{text:"SerializableSpace",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),t._v(" "),a("p",[t._v("Convert a JSONable data type to a batch of samples from this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("sample_n")]),t._v(": The JSONable data type to convert.")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The resulting batch of samples.")]),t._v(" "),a("h3",{attrs:{id:"to-jsonable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable"}},[t._v("#")]),t._v(" to_jsonable "),a("Badge",{attrs:{text:"SerializableSpace",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),t._v(" "),a("p",[t._v("Convert a batch of samples from this space to a JSONable data type.")]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("sample_n")]),t._v(": The batch of samples to convert.")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The resulting JSONable data type.")]),t._v(" "),a("h2",{attrs:{id:"distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#distribution"}},[t._v("#")]),t._v(" Distribution")]),t._v(" "),a("p",[t._v("A probability distribution.")]),t._v(" "),a("h3",{attrs:{id:"sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Distribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Sample from this distribution.")]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled element.")]),t._v(" "),a("h2",{attrs:{id:"implicitdistribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implicitdistribution"}},[t._v("#")]),t._v(" ImplicitDistribution")]),t._v(" "),a("p",[t._v("A probability distribution formalized implicitly, i.e. by a black-box sample() function.")]),t._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ImplicitDistribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ImplicitDistribution",sig:{params:[{name:"sample_function",annotation:"Callable[[], T]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize ImplicitDistribution.")]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("sample_function")]),t._v(": The sample() function to use.")])]),t._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" random\n\ndice "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ImplicitDistribution"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("lambda")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" random"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("randint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nroll "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" dice"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("sample"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Distribution",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Sample from this distribution.")]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled element.")]),t._v(" "),a("h2",{attrs:{id:"discretedistribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#discretedistribution"}},[t._v("#")]),t._v(" DiscreteDistribution")]),t._v(" "),a("p",[t._v("A discrete probability distribution.")]),t._v(" "),a("h3",{attrs:{id:"constructor-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"DiscreteDistribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"DiscreteDistribution",sig:{params:[{name:"values",annotation:"List[Tuple[T, float]]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize DiscreteDistribution.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If the given probabilities do not sum to 1, they are implicitly normalized as such for sampling.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("values")]),t._v(": The list of (element, probability) pairs.")])]),t._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[t._v("game_strategy "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" DiscreteDistribution"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'rock'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.7")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'paper'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'scissors'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nmove "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" game_strategy"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("sample"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"get-values"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-values"}},[t._v("#")]),t._v(" get_values "),a("Badge",{attrs:{text:"DiscreteDistribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_values",sig:{params:[{name:"self"}],return:"List[Tuple[T, float]]"}}}),t._v(" "),a("p",[t._v("Get the list of (element, probability) pairs.")]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The (element, probability) pairs.")]),t._v(" "),a("h3",{attrs:{id:"sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Distribution",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Sample from this distribution.")]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled element.")]),t._v(" "),a("h2",{attrs:{id:"singlevaluedistribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#singlevaluedistribution"}},[t._v("#")]),t._v(" SingleValueDistribution")]),t._v(" "),a("p",[t._v("A single value distribution (i.e. Dirac distribution).")]),t._v(" "),a("h3",{attrs:{id:"constructor-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-4"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"SingleValueDistribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"SingleValueDistribution",sig:{params:[{name:"value",annotation:"T"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize SingleValueDistribution.")]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The single value of this distribution.")])]),t._v(" "),a("h3",{attrs:{id:"get-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-value"}},[t._v("#")]),t._v(" get_value "),a("Badge",{attrs:{text:"SingleValueDistribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_value",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Get the single value of this distribution.")]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The single value of this distribution.")]),t._v(" "),a("h3",{attrs:{id:"get-values-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-values-2"}},[t._v("#")]),t._v(" get_values "),a("Badge",{attrs:{text:"DiscreteDistribution",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_values",sig:{params:[{name:"self"}],return:"List[Tuple[T, float]]"}}}),t._v(" "),a("p",[t._v("Get the list of (element, probability) pairs.")]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The (element, probability) pairs.")]),t._v(" "),a("h3",{attrs:{id:"sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-5"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Distribution",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Sample from this distribution.")]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled element.")]),t._v(" "),a("h2",{attrs:{id:"value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#value"}},[t._v("#")]),t._v(" Value")]),t._v(" "),a("p",[t._v("A value (reward or cost).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("It is recommended to use either the reward or the cost parameter. If no one is used, a reward/cost of 0 is\nassumed. If both are used, reward will be considered and cost ignored. In any case, both reward and cost\nattributes will be defined after initialization.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("reward")]),t._v(": The optional reward.")]),t._v(" "),a("li",[a("strong",[t._v("cost")]),t._v(": The optional cost.")])]),t._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# These two lines are equivalent, use the one you prefer")]),t._v("\nvalue_1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("reward"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nvalue_2 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("cost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("assert")]),t._v(" value_1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("reward "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" value_2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("reward "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# True")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("assert")]),t._v(" value_1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cost "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" value_2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cost "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# True")]),t._v("\n")])])]),a("h2",{attrs:{id:"environmentoutcome"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environmentoutcome"}},[t._v("#")]),t._v(" EnvironmentOutcome")]),t._v(" "),a("p",[t._v("An environment outcome for an internal transition.")]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The agent's observation of the current environment.")]),t._v(" "),a("li",[a("strong",[t._v("value")]),t._v(": The value (reward or cost) returned after previous action.")]),t._v(" "),a("li",[a("strong",[t._v("termination")]),t._v(": Whether the episode has ended, in which case further step() calls will return undefined results.")]),t._v(" "),a("li",[a("strong",[t._v("info")]),t._v(": Optional auxiliary diagnostic information (helpful for debugging, and sometimes learning).")])]),t._v(" "),a("h3",{attrs:{id:"asdict"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asdict"}},[t._v("#")]),t._v(" asdict "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"asdict",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Return the fields of the instance as a new dictionary mapping field names to field values.")]),t._v(" "),a("h3",{attrs:{id:"astuple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#astuple"}},[t._v("#")]),t._v(" astuple "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"astuple",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Return the fields of the instance as a new tuple of field values.")]),t._v(" "),a("h3",{attrs:{id:"replace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#replace"}},[t._v("#")]),t._v(" replace "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"replace",sig:{params:[{name:"self"},{name:"**changes"}]}}}),t._v(" "),a("p",[t._v("Return a new object replacing specified fields with new values.")]),t._v(" "),a("h2",{attrs:{id:"transitionoutcome"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transitionoutcome"}},[t._v("#")]),t._v(" TransitionOutcome")]),t._v(" "),a("p",[t._v("A transition outcome.")]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The new state after the transition.")]),t._v(" "),a("li",[a("strong",[t._v("value")]),t._v(": The value (reward or cost) returned after previous action.")]),t._v(" "),a("li",[a("strong",[t._v("termination")]),t._v(": Whether the episode has ended, in which case further step() calls will return undefined results.")]),t._v(" "),a("li",[a("strong",[t._v("info")]),t._v(": Optional auxiliary diagnostic information (helpful for debugging, and sometimes learning).")])]),t._v(" "),a("h3",{attrs:{id:"asdict-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asdict-2"}},[t._v("#")]),t._v(" asdict "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"asdict",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Return the fields of the instance as a new dictionary mapping field names to field values.")]),t._v(" "),a("h3",{attrs:{id:"astuple-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#astuple-2"}},[t._v("#")]),t._v(" astuple "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"astuple",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Return the fields of the instance as a new tuple of field values.")]),t._v(" "),a("h3",{attrs:{id:"replace-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#replace-2"}},[t._v("#")]),t._v(" replace "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"replace",sig:{params:[{name:"self"},{name:"**changes"}]}}}),t._v(" "),a("p",[t._v("Return a new object replacing specified fields with new values.")]),t._v(" "),a("h2",{attrs:{id:"strdict"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strdict"}},[t._v("#")]),t._v(" StrDict")]),t._v(" "),a("p",[t._v("A dictionary with String keys (e.g. agent names).")]),t._v(" "),a("h2",{attrs:{id:"constraint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constraint"}},[t._v("#")]),t._v(" Constraint")]),t._v(" "),a("p",[t._v("A constraint.")]),t._v(" "),a("h3",{attrs:{id:"check"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check"}},[t._v("#")]),t._v(" check "),a("Badge",{attrs:{text:"Constraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory"},{name:"action",annotation:"D.T_event"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check this constraint.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" to return False. This\ninformation can then be exploited by solvers to avoid computing next state to evaluate the constraint (more\nefficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint is checked (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state"}},[t._v("#")]),t._v(" is_constraint_dependent_on_next_state "),a("Badge",{attrs:{text:"Constraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_constraint_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" the first time and automatically caches its value to\nmake future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state-2"}},[t._v("#")]),t._v(" _is_constraint_dependent_on_next_state_ "),a("Badge",{attrs:{text:"Constraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_constraint_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")]),t._v(" "),a("h2",{attrs:{id:"implicitconstraint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implicitconstraint"}},[t._v("#")]),t._v(" ImplicitConstraint")]),t._v(" "),a("p",[t._v("A constraint formalized implicitly, i.e. by a black-box check() function.")]),t._v(" "),a("h3",{attrs:{id:"constructor-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-5"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ImplicitConstraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ImplicitConstraint",sig:{params:[{name:"check_function",annotation:"Callable[[D.T_memory, D.T_event, Optional[D.T_state]], bool]"},{name:"depends_on_next_state",default:"True",annotation:"bool"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize ImplicitConstraint.")]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("check_function")]),t._v(": The check() function to use.")]),t._v(" "),a("li",[a("strong",[t._v("depends_on_next_state")]),t._v(": Whether the check() function requires the next_state parameter for its computation.")])]),t._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[t._v("constraint "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ImplicitConstraint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("lambda")]),t._v(" memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" next_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("x "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("%")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"check-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-2"}},[t._v("#")]),t._v(" check "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory"},{name:"action",annotation:"D.T_event"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check this constraint.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" to return False. This\ninformation can then be exploited by solvers to avoid computing next state to evaluate the constraint (more\nefficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint is checked (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state-3"}},[t._v("#")]),t._v(" is_constraint_dependent_on_next_state "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_constraint_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" the first time and automatically caches its value to\nmake future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state-4"}},[t._v("#")]),t._v(" _is_constraint_dependent_on_next_state_ "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_constraint_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")]),t._v(" "),a("h2",{attrs:{id:"boundconstraint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#boundconstraint"}},[t._v("#")]),t._v(" BoundConstraint")]),t._v(" "),a("p",[t._v("A constraint characterized by an evaluation function, an inequality and a bound.")]),t._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("p",[t._v("A BoundConstraint with inequality '>=' is checked if (and only if) its "),a("code",[t._v("BoundConstraint.evaluate()")]),t._v(" function returns\na float greater than or equal to its bound.")]),t._v(" "),a("h3",{attrs:{id:"constructor-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-6"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"BoundConstraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"BoundConstraint",sig:{params:[{name:"evaluate_function",annotation:"Callable[[D.T_memory, D.T_event, Optional[D.T_state]], float]"},{name:"inequality",annotation:"str"},{name:"bound",annotation:"float"},{name:"depends_on_next_state",default:"True",annotation:"bool"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize BoundConstraint.")]),t._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("evaluate_function")]),t._v(": The evaluate() function to use.")]),t._v(" "),a("li",[a("strong",[t._v("inequality")]),t._v(": A string ('<', '<=', '>' or '>=') describing the constraint inequality.")]),t._v(" "),a("li",[a("strong",[t._v("bound")]),t._v(": The bound of the constraint.")]),t._v(" "),a("li",[a("strong",[t._v("depends_on_next_state")]),t._v(": Whether the evaluate() function requires the next_state parameter for its computation.")])]),t._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[t._v("constraint "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" BoundConstraint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("lambda")]),t._v(" memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" next_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("x"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'>'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5.")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"check-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-3"}},[t._v("#")]),t._v(" check "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory"},{name:"action",annotation:"D.T_event"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check this constraint.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" to return False. This\ninformation can then be exploited by solvers to avoid computing next state to evaluate the constraint (more\nefficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint is checked (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"evaluate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#evaluate"}},[t._v("#")]),t._v(" evaluate "),a("Badge",{attrs:{text:"BoundConstraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"evaluate",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory"},{name:"action",annotation:"D.T_event"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"float"}}}),t._v(" "),a("p",[t._v("Evaluate the left side of this BoundConstraint.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" to return False. This\ninformation can then be exploited by solvers to avoid computing next state to evaluate the constraint (more\nefficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The float value resulting from the evaluation.")]),t._v(" "),a("h3",{attrs:{id:"get-bound"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-bound"}},[t._v("#")]),t._v(" get_bound "),a("Badge",{attrs:{text:"BoundConstraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_bound",sig:{params:[{name:"self"}],return:"float"}}}),t._v(" "),a("p",[t._v("Get the bound of the constraint.")]),t._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The constraint bound.")]),t._v(" "),a("h3",{attrs:{id:"get-inequality"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-inequality"}},[t._v("#")]),t._v(" get_inequality "),a("Badge",{attrs:{text:"BoundConstraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_inequality",sig:{params:[{name:"self"}],return:"str"}}}),t._v(" "),a("p",[t._v("Get the string ('<', '<=', '>' or '>=') describing the constraint inequality.")]),t._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The string describing the inequality.")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state-5"}},[t._v("#")]),t._v(" is_constraint_dependent_on_next_state "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_constraint_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" the first time and automatically caches its value to\nmake future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state-6"}},[t._v("#")]),t._v(" _is_constraint_dependent_on_next_state_ "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_constraint_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{569:function(t,e,a){"use strict";a.r(e);var s=a(38),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"core"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#core"}},[t._v("#")]),t._v(" core")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#space"}},[t._v("#")]),t._v(" Space")]),t._v(" "),a("p",[t._v("A space representing a finite or infinite set.")]),t._v(" "),a("p",[t._v("This class (or any of its descendant) is typically used to specify action, observation or goal spaces.")]),t._v(" "),a("h3",{attrs:{id:"contains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h2",{attrs:{id:"implicitspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implicitspace"}},[t._v("#")]),t._v(" ImplicitSpace")]),t._v(" "),a("p",[t._v("A space formalized implicitly, i.e. by a black-box contains() function.")]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ImplicitSpace",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ImplicitSpace",sig:{params:[{name:"contains_function",annotation:"Callable[[T], bool]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize ImplicitSpace.")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("contains_function")]),t._v(": The contains() function to use.")])]),t._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[t._v("my_space "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ImplicitSpace"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("lambda")]),t._v(" x"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("10")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" x"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'position'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"contains-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains-2"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h2",{attrs:{id:"enumerablespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enumerablespace"}},[t._v("#")]),t._v(" EnumerableSpace")]),t._v(" "),a("p",[t._v("A space which elements can be enumerated.")]),t._v(" "),a("h3",{attrs:{id:"contains-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains-3"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-elements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-elements"}},[t._v("#")]),t._v(" get_elements "),a("Badge",{attrs:{text:"EnumerableSpace",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_elements",sig:{params:[{name:"self"}],return:"Iterable[T]"}}}),t._v(" "),a("p",[t._v("Get the elements of this space.")]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The elements of this space.")]),t._v(" "),a("h2",{attrs:{id:"emptyspace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#emptyspace"}},[t._v("#")]),t._v(" EmptySpace")]),t._v(" "),a("p",[t._v("An (enumerable) empty space.")]),t._v(" "),a("h3",{attrs:{id:"contains-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains-4"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-elements-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-elements-2"}},[t._v("#")]),t._v(" get_elements "),a("Badge",{attrs:{text:"EnumerableSpace",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_elements",sig:{params:[{name:"self"}],return:"Iterable[T]"}}}),t._v(" "),a("p",[t._v("Get the elements of this space.")]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The elements of this space.")]),t._v(" "),a("h2",{attrs:{id:"samplablespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#samplablespace"}},[t._v("#")]),t._v(" SamplableSpace")]),t._v(" "),a("p",[t._v("A space which can be sampled (uniformly randomly).")]),t._v(" "),a("h3",{attrs:{id:"contains-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains-5"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"SamplableSpace",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Uniformly randomly sample a random element of this space.")]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled element.")]),t._v(" "),a("h2",{attrs:{id:"serializablespace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#serializablespace"}},[t._v("#")]),t._v(" SerializableSpace")]),t._v(" "),a("p",[t._v("A space which can be serialized (to/from JSON).")]),t._v(" "),a("h3",{attrs:{id:"contains-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#contains-6"}},[t._v("#")]),t._v(" contains "),a("Badge",{attrs:{text:"Space",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"contains",sig:{params:[{name:"self"},{name:"x",annotation:"T"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check whether x is a valid member of this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("x")]),t._v(": The member to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if x is a valid member of this space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"from-jsonable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#from-jsonable"}},[t._v("#")]),t._v(" from_jsonable "),a("Badge",{attrs:{text:"SerializableSpace",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"from_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Sequence"}],return:"Iterable[T]"}}}),t._v(" "),a("p",[t._v("Convert a JSONable data type to a batch of samples from this space.")]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("sample_n")]),t._v(": The JSONable data type to convert.")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The resulting batch of samples.")]),t._v(" "),a("h3",{attrs:{id:"to-jsonable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#to-jsonable"}},[t._v("#")]),t._v(" to_jsonable "),a("Badge",{attrs:{text:"SerializableSpace",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"to_jsonable",sig:{params:[{name:"self"},{name:"sample_n",annotation:"Iterable[T]"}],return:"Sequence"}}}),t._v(" "),a("p",[t._v("Convert a batch of samples from this space to a JSONable data type.")]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("sample_n")]),t._v(": The batch of samples to convert.")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The resulting JSONable data type.")]),t._v(" "),a("h2",{attrs:{id:"distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#distribution"}},[t._v("#")]),t._v(" Distribution")]),t._v(" "),a("p",[t._v("A probability distribution.")]),t._v(" "),a("h3",{attrs:{id:"sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Distribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Sample from this distribution.")]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled element.")]),t._v(" "),a("h2",{attrs:{id:"implicitdistribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implicitdistribution"}},[t._v("#")]),t._v(" ImplicitDistribution")]),t._v(" "),a("p",[t._v("A probability distribution formalized implicitly, i.e. by a black-box sample() function.")]),t._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ImplicitDistribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ImplicitDistribution",sig:{params:[{name:"sample_function",annotation:"Callable[[], T]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize ImplicitDistribution.")]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("sample_function")]),t._v(": The sample() function to use.")])]),t._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("import")]),t._v(" random\n\ndice "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ImplicitDistribution"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("lambda")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" random"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("randint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("6")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nroll "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" dice"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("sample"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Distribution",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Sample from this distribution.")]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled element.")]),t._v(" "),a("h2",{attrs:{id:"discretedistribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#discretedistribution"}},[t._v("#")]),t._v(" DiscreteDistribution")]),t._v(" "),a("p",[t._v("A discrete probability distribution.")]),t._v(" "),a("h3",{attrs:{id:"constructor-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"DiscreteDistribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"DiscreteDistribution",sig:{params:[{name:"values",annotation:"List[Tuple[T, float]]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize DiscreteDistribution.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If the given probabilities do not sum to 1, they are implicitly normalized as such for sampling.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("values")]),t._v(": The list of (element, probability) pairs.")])]),t._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[t._v("game_strategy "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" DiscreteDistribution"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'rock'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.7")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'paper'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'scissors'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0.2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nmove "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" game_strategy"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("sample"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"get-values"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-values"}},[t._v("#")]),t._v(" get_values "),a("Badge",{attrs:{text:"DiscreteDistribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_values",sig:{params:[{name:"self"}],return:"List[Tuple[T, float]]"}}}),t._v(" "),a("p",[t._v("Get the list of (element, probability) pairs.")]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The (element, probability) pairs.")]),t._v(" "),a("h3",{attrs:{id:"sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Distribution",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Sample from this distribution.")]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled element.")]),t._v(" "),a("h2",{attrs:{id:"singlevaluedistribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#singlevaluedistribution"}},[t._v("#")]),t._v(" SingleValueDistribution")]),t._v(" "),a("p",[t._v("A single value distribution (i.e. Dirac distribution).")]),t._v(" "),a("h3",{attrs:{id:"constructor-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-4"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"SingleValueDistribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"SingleValueDistribution",sig:{params:[{name:"value",annotation:"T"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize SingleValueDistribution.")]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The single value of this distribution.")])]),t._v(" "),a("h3",{attrs:{id:"get-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-value"}},[t._v("#")]),t._v(" get_value "),a("Badge",{attrs:{text:"SingleValueDistribution",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_value",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Get the single value of this distribution.")]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The single value of this distribution.")]),t._v(" "),a("h3",{attrs:{id:"get-values-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-values-2"}},[t._v("#")]),t._v(" get_values "),a("Badge",{attrs:{text:"DiscreteDistribution",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_values",sig:{params:[{name:"self"}],return:"List[Tuple[T, float]]"}}}),t._v(" "),a("p",[t._v("Get the list of (element, probability) pairs.")]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The (element, probability) pairs.")]),t._v(" "),a("h3",{attrs:{id:"sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-5"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Distribution",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"}],return:"T"}}}),t._v(" "),a("p",[t._v("Sample from this distribution.")]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The sampled element.")]),t._v(" "),a("h2",{attrs:{id:"value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#value"}},[t._v("#")]),t._v(" Value")]),t._v(" "),a("p",[t._v("A value (reward or cost).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("It is recommended to use either the reward or the cost parameter. If no one is used, a reward/cost of 0 is\nassumed. If both are used, reward will be considered and cost ignored. In any case, both reward and cost\nattributes will be defined after initialization.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("reward")]),t._v(": The optional reward.")]),t._v(" "),a("li",[a("strong",[t._v("cost")]),t._v(": The optional cost.")])]),t._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# These two lines are equivalent, use the one you prefer")]),t._v("\nvalue_1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("reward"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nvalue_2 "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" Value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("cost"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("assert")]),t._v(" value_1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("reward "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" value_2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("reward "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# True")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("assert")]),t._v(" value_1"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cost "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" value_2"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("cost "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# True")]),t._v("\n")])])]),a("h2",{attrs:{id:"environmentoutcome"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environmentoutcome"}},[t._v("#")]),t._v(" EnvironmentOutcome")]),t._v(" "),a("p",[t._v("An environment outcome for an internal transition.")]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The agent's observation of the current environment.")]),t._v(" "),a("li",[a("strong",[t._v("value")]),t._v(": The value (reward or cost) returned after previous action.")]),t._v(" "),a("li",[a("strong",[t._v("termination")]),t._v(": Whether the episode has ended, in which case further step() calls will return undefined results.")]),t._v(" "),a("li",[a("strong",[t._v("info")]),t._v(": Optional auxiliary diagnostic information (helpful for debugging, and sometimes learning).")])]),t._v(" "),a("h3",{attrs:{id:"asdict"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asdict"}},[t._v("#")]),t._v(" asdict "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"asdict",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Return the fields of the instance as a new dictionary mapping field names to field values.")]),t._v(" "),a("h3",{attrs:{id:"astuple"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#astuple"}},[t._v("#")]),t._v(" astuple "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"astuple",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Return the fields of the instance as a new tuple of field values.")]),t._v(" "),a("h3",{attrs:{id:"replace"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#replace"}},[t._v("#")]),t._v(" replace "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"replace",sig:{params:[{name:"self"},{name:"**changes"}]}}}),t._v(" "),a("p",[t._v("Return a new object replacing specified fields with new values.")]),t._v(" "),a("h2",{attrs:{id:"transitionoutcome"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#transitionoutcome"}},[t._v("#")]),t._v(" TransitionOutcome")]),t._v(" "),a("p",[t._v("A transition outcome.")]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The new state after the transition.")]),t._v(" "),a("li",[a("strong",[t._v("value")]),t._v(": The value (reward or cost) returned after previous action.")]),t._v(" "),a("li",[a("strong",[t._v("termination")]),t._v(": Whether the episode has ended, in which case further step() calls will return undefined results.")]),t._v(" "),a("li",[a("strong",[t._v("info")]),t._v(": Optional auxiliary diagnostic information (helpful for debugging, and sometimes learning).")])]),t._v(" "),a("h3",{attrs:{id:"asdict-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asdict-2"}},[t._v("#")]),t._v(" asdict "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"asdict",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Return the fields of the instance as a new dictionary mapping field names to field values.")]),t._v(" "),a("h3",{attrs:{id:"astuple-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#astuple-2"}},[t._v("#")]),t._v(" astuple "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"astuple",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Return the fields of the instance as a new tuple of field values.")]),t._v(" "),a("h3",{attrs:{id:"replace-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#replace-2"}},[t._v("#")]),t._v(" replace "),a("Badge",{attrs:{text:"ExtendedDataclass",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"replace",sig:{params:[{name:"self"},{name:"**changes"}]}}}),t._v(" "),a("p",[t._v("Return a new object replacing specified fields with new values.")]),t._v(" "),a("h2",{attrs:{id:"strdict"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#strdict"}},[t._v("#")]),t._v(" StrDict")]),t._v(" "),a("p",[t._v("A dictionary with String keys (e.g. agent names).")]),t._v(" "),a("h2",{attrs:{id:"constraint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constraint"}},[t._v("#")]),t._v(" Constraint")]),t._v(" "),a("p",[t._v("A constraint.")]),t._v(" "),a("h3",{attrs:{id:"check"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check"}},[t._v("#")]),t._v(" check "),a("Badge",{attrs:{text:"Constraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory"},{name:"action",annotation:"D.T_event"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check this constraint.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" to return False. This\ninformation can then be exploited by solvers to avoid computing next state to evaluate the constraint (more\nefficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint is checked (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state"}},[t._v("#")]),t._v(" is_constraint_dependent_on_next_state "),a("Badge",{attrs:{text:"Constraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_constraint_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" the first time and automatically caches its value to\nmake future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state-2"}},[t._v("#")]),t._v(" _is_constraint_dependent_on_next_state_ "),a("Badge",{attrs:{text:"Constraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_constraint_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")]),t._v(" "),a("h2",{attrs:{id:"implicitconstraint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#implicitconstraint"}},[t._v("#")]),t._v(" ImplicitConstraint")]),t._v(" "),a("p",[t._v("A constraint formalized implicitly, i.e. by a black-box check() function.")]),t._v(" "),a("h3",{attrs:{id:"constructor-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-5"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ImplicitConstraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ImplicitConstraint",sig:{params:[{name:"check_function",annotation:"Callable[[D.T_memory, D.T_event, Optional[D.T_state]], bool]"},{name:"depends_on_next_state",default:"True",annotation:"bool"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize ImplicitConstraint.")]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("check_function")]),t._v(": The check() function to use.")]),t._v(" "),a("li",[a("strong",[t._v("depends_on_next_state")]),t._v(": Whether the check() function requires the next_state parameter for its computation.")])]),t._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[t._v("constraint "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" ImplicitConstraint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("lambda")]),t._v(" memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" next_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("x "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("%")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"check-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-2"}},[t._v("#")]),t._v(" check "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory"},{name:"action",annotation:"D.T_event"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check this constraint.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" to return False. This\ninformation can then be exploited by solvers to avoid computing next state to evaluate the constraint (more\nefficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint is checked (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state-3"}},[t._v("#")]),t._v(" is_constraint_dependent_on_next_state "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_constraint_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" the first time and automatically caches its value to\nmake future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state-4"}},[t._v("#")]),t._v(" _is_constraint_dependent_on_next_state_ "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_constraint_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")]),t._v(" "),a("h2",{attrs:{id:"boundconstraint"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#boundconstraint"}},[t._v("#")]),t._v(" BoundConstraint")]),t._v(" "),a("p",[t._v("A constraint characterized by an evaluation function, an inequality and a bound.")]),t._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("p",[t._v("A BoundConstraint with inequality '>=' is checked if (and only if) its "),a("code",[t._v("BoundConstraint.evaluate()")]),t._v(" function returns\na float greater than or equal to its bound.")]),t._v(" "),a("h3",{attrs:{id:"constructor-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-6"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"BoundConstraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"BoundConstraint",sig:{params:[{name:"evaluate_function",annotation:"Callable[[D.T_memory, D.T_event, Optional[D.T_state]], float]"},{name:"inequality",annotation:"str"},{name:"bound",annotation:"float"},{name:"depends_on_next_state",default:"True",annotation:"bool"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize BoundConstraint.")]),t._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("evaluate_function")]),t._v(": The evaluate() function to use.")]),t._v(" "),a("li",[a("strong",[t._v("inequality")]),t._v(": A string ('<', '<=', '>' or '>=') describing the constraint inequality.")]),t._v(" "),a("li",[a("strong",[t._v("bound")]),t._v(": The bound of the constraint.")]),t._v(" "),a("li",[a("strong",[t._v("depends_on_next_state")]),t._v(": Whether the evaluate() function requires the next_state parameter for its computation.")])]),t._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[t._v("constraint "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" BoundConstraint"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("lambda")]),t._v(" memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" next_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" next_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("x"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'>'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5.")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"check-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-3"}},[t._v("#")]),t._v(" check "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory"},{name:"action",annotation:"D.T_event"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check this constraint.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" to return False. This\ninformation can then be exploited by solvers to avoid computing next state to evaluate the constraint (more\nefficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint is checked (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"evaluate"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#evaluate"}},[t._v("#")]),t._v(" evaluate "),a("Badge",{attrs:{text:"BoundConstraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"evaluate",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory"},{name:"action",annotation:"D.T_event"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"float"}}}),t._v(" "),a("p",[t._v("Evaluate the left side of this BoundConstraint.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" to return False. This\ninformation can then be exploited by solvers to avoid computing next state to evaluate the constraint (more\nefficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The float value resulting from the evaluation.")]),t._v(" "),a("h3",{attrs:{id:"get-bound"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-bound"}},[t._v("#")]),t._v(" get_bound "),a("Badge",{attrs:{text:"BoundConstraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_bound",sig:{params:[{name:"self"}],return:"float"}}}),t._v(" "),a("p",[t._v("Get the bound of the constraint.")]),t._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The constraint bound.")]),t._v(" "),a("h3",{attrs:{id:"get-inequality"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-inequality"}},[t._v("#")]),t._v(" get_inequality "),a("Badge",{attrs:{text:"BoundConstraint",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_inequality",sig:{params:[{name:"self"}],return:"str"}}}),t._v(" "),a("p",[t._v("Get the string ('<', '<=', '>' or '>=') describing the constraint inequality.")]),t._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The string describing the inequality.")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state-5"}},[t._v("#")]),t._v(" is_constraint_dependent_on_next_state "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_constraint_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("Constraint._is_constraint_dependent_on_next_state_()")]),t._v(" the first time and automatically caches its value to\nmake future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-constraint-dependent-on-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-constraint-dependent-on-next-state-6"}},[t._v("#")]),t._v(" _is_constraint_dependent_on_next_state_ "),a("Badge",{attrs:{text:"Constraint",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_constraint_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether this constraint requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Constraint.is_constraint_dependent_on_next_state()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the constraint computation depends on next_state (False otherwise).")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/58.160f495b.js b/assets/js/58.ce911ac4.js similarity index 99% rename from assets/js/58.160f495b.js rename to assets/js/58.ce911ac4.js index aaefa61e07..7ec54a6b0c 100644 --- a/assets/js/58.160f495b.js +++ b/assets/js/58.ce911ac4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{569:function(t,e,a){"use strict";a.r(e);var s=a(38),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"domains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#domains"}},[t._v("#")]),t._v(" domains")]),t._v(" "),a("p",[t._v("This module contains base classes for quickly building domains.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#domain"}},[t._v("#")]),t._v(" Domain")]),t._v(" "),a("p",[t._v("This is the highest level domain class (inheriting top-level class for each mandatory domain characteristic).")]),t._v(" "),a("p",[t._v("This helper class can be used as the main base class for domains.")]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("p",[t._v('with "..." replaced when needed by a number of classes from following domain characteristics (the ones in\nparentheses are optional):')]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("agent")]),t._v(": MultiAgent -> SingleAgent")]),t._v(" "),a("li",[a("strong",[t._v("concurrency")]),t._v(": Parallel -> Sequential")]),t._v(" "),a("li",[a("strong",[t._v("(constraints)")]),t._v(": Constrained")]),t._v(" "),a("li",[a("strong",[t._v("dynamics")]),t._v(": Environment -> Simulation -> UncertainTransitions -> EnumerableTransitions\n-> DeterministicTransitions")]),t._v(" "),a("li",[a("strong",[t._v("events")]),t._v(": Events -> Actions -> UnrestrictedActions")]),t._v(" "),a("li",[a("strong",[t._v("(goals)")]),t._v(": Goals")]),t._v(" "),a("li",[a("strong",[t._v("(initialization)")]),t._v(": Initializable -> UncertainInitialized -> DeterministicInitialized")]),t._v(" "),a("li",[a("strong",[t._v("memory")]),t._v(": History -> FiniteHistory -> Markovian -> Memoryless")]),t._v(" "),a("li",[a("strong",[t._v("observability")]),t._v(": PartiallyObservable -> TransformedObservable -> FullyObservable")]),t._v(" "),a("li",[a("strong",[t._v("(renderability)")]),t._v(": Renderable")]),t._v(" "),a("li",[a("strong",[t._v("value")]),t._v(": Rewards -> PositiveCosts")])]),t._v(" "),a("h3",{attrs:{id:"check-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"solve-with"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-2"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-2"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-3"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-2"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-2"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"Optional[int]"}}}),t._v(" "),a("p",[t._v("Get the memory max length (or None if unbounded).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always None by default because the memory length is unbounded at this level.")])]),t._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length (or None if unbounded).")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-2"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-2"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-3"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-2"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-2"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-2"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-2"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"state-step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"rldomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rldomain"}},[t._v("#")]),t._v(" RLDomain")]),t._v(" "),a("p",[t._v("This is a typical Reinforcement Learning domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("Environment")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Initializable")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("TransformedObservable")]),t._v(" "),a("li",[t._v("Rewards")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-3"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-4"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-3"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-3"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-3"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-4"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-3"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-3"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-3"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-3"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"solve-with-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-2"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-4"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-5"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-6"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-4"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-2"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-4"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-52"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-2"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-53"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-2"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-54"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-3"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-55"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-2"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-56"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-4"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-57"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-5"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-58"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-6"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-59"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-2"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-60"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-4"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-61"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-4"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-62"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-2"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-63"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-4"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-64"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-2"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-65"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-4"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-66"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-67"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"state-reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-68"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-2"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-69"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-70"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"multiagentrldomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multiagentrldomain"}},[t._v("#")]),t._v(" MultiAgentRLDomain")]),t._v(" "),a("p",[t._v("This is a typical multi-agent Reinforcement Learning domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("MultiAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("Environment")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Initializable")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("TransformedObservable")]),t._v(" "),a("li",[t._v("Rewards")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-5"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-53"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-71"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-7"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-72"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-5"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-54"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-73"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-5"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-55"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-74"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-3"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-56"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-75"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-5"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-57"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-76"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-7"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-77"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-5"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-58"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-78"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-5"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-59"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-79"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-5"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-60"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-80"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-5"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-61"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-81"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-3"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-82"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"solve-with-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-3"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-62"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-83"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-63"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-84"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-6"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-64"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-85"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-8"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-86"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-9"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-87"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-6"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-65"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-88"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-3"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-66"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-89"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-6"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-67"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-90"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-3"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-68"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-91"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-4"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-92"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-5"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-93"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-4"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-69"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-94"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-6"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-70"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-95"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-8"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-96"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-9"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-97"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-3"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-71"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-98"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-6"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-72"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-99"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-6"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-73"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-100"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-3"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-74"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-101"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-6"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-75"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-102"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-3"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-76"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-103"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-6"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-77"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-104"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-4"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-105"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"state-reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-2"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-106"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-3"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-78"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-107"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-6"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-79"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-108"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"statelesssimulatordomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#statelesssimulatordomain"}},[t._v("#")]),t._v(" StatelessSimulatorDomain")]),t._v(" "),a("p",[t._v("This is a typical stateless simulator domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("Simulation")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("TransformedObservable")]),t._v(" "),a("li",[t._v("Rewards")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("StatelessSimulatorDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-7"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-80"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-109"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-10"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-110"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-7"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-81"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-111"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-7"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-82"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-112"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-5"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-83"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-113"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-7"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-84"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-114"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-10"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-115"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-7"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-85"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-116"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-7"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-86"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-117"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-7"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-87"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-118"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-7"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-88"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-119"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-89"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-120"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-90"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-4"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-91"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-121"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-7"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-92"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-122"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-8"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-93"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-123"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-11"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-124"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-12"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-125"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-8"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-94"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-126"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-4"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-95"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-127"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-8"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-96"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-128"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-4"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-97"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-129"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-6"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-130"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-7"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-131"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-6"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-98"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-132"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-8"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-99"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-133"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-11"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-134"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-12"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-135"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-4"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-100"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-136"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-8"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-101"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-137"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-8"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-102"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-138"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-4"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-103"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-139"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-8"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-104"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-140"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-4"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-105"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-141"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-8"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-106"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-142"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-107"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-143"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-2"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-108"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-109"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-144"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-4"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-110"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-145"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-8"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-111"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-146"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"mdpdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mdpdomain"}},[t._v("#")]),t._v(" MDPDomain")]),t._v(" "),a("p",[t._v("This is a typical Markov Decision Process domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("EnumerableTransitions")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("DeterministicInitialized")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("FullyObservable")]),t._v(" "),a("li",[t._v("Rewards")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MDPDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-9"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-112"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-147"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-13"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-148"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-9"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-113"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-149"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-9"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-114"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-150"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-151"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-152"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-115"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-153"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-7"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-116"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-154"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-9"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-117"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-155"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-13"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-156"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-118"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-157"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-9"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-119"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-158"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-9"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-120"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-159"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-9"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-121"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-160"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-9"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-122"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-161"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-123"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-162"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-163"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-5"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-164"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-124"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-165"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-3"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-125"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-5"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-126"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-166"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-9"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-127"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-167"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-10"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-128"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-168"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-14"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-169"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-15"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-170"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-10"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-129"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-171"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-5"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-130"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-172"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-10"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-131"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-173"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-5"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-132"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-174"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-2"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-175"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-3"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-176"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-2"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-177"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-3"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-178"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-8"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-179"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-9"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-180"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-2"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-133"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-181"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-8"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-134"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-182"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-10"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-135"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-183"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-14"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-184"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-15"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-185"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-2"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-136"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-186"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-5"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-137"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-187"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-10"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-138"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-188"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-10"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-139"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-189"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-5"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-140"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-190"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-10"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-141"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-191"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-5"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-142"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-192"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-10"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-143"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-193"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-2"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-144"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-194"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-2"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-195"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-3"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-196"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-6"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-197"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-145"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-198"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-4"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-146"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-3"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-199"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-2"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-147"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-200"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-5"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-148"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-201"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-10"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-149"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-202"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"pomdpdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pomdpdomain"}},[t._v("#")]),t._v(" POMDPDomain")]),t._v(" "),a("p",[t._v("This is a typical Partially Observable Markov Decision Process domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("EnumerableTransitions")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("UncertainInitialized")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("PartiallyObservable")]),t._v(" "),a("li",[t._v("Rewards")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("POMDPDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-11"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-150"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-203"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-16"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-204"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-11"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-151"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-205"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-205"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-11"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-152"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-206"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-206"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-4"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-207"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-207"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-3"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-153"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-208"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-208"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-11"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-154"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-209"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-209"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-16"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-210"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-210"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-3"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-155"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-211"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-211"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-11"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-156"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-212"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-212"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-11"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-157"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-213"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-213"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-11"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-158"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-214"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-214"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-11"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-159"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-215"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-215"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-3"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-160"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-216"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-216"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-4"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-217"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-217"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-7"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-218"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-218"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-5"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-161"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-219"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-219"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-5"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-162"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-6"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-163"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-220"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-220"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-11"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-164"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-221"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-221"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-12"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-165"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-222"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-222"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-17"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-223"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-223"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-18"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-224"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-224"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-12"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-166"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-225"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-225"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-6"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-167"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-226"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-226"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-12"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-168"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-227"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-227"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-6"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-169"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-228"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-228"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-5"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-229"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-229"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-6"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-230"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-230"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-10"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-231"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-231"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-11"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-232"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-232"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-4"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-170"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-233"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-233"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-12"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-171"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-234"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-234"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-17"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-235"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-235"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-18"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-236"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-236"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-4"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-172"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-237"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-237"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-6"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-173"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-238"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-238"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-12"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-174"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-239"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-239"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-12"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-175"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-240"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-240"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-6"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-176"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-241"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-241"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-12"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-177"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-242"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-242"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-6"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-178"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-243"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-243"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-12"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-179"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-244"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-244"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-4"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-180"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-245"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-245"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-5"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-246"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-246"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-6"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-247"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-247"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-8"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-248"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-248"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-6"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-181"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-249"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-249"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-6"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-182"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-4"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-250"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-250"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-3"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-183"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-251"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-251"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-6"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-184"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-252"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-252"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-12"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-185"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-253"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-253"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"goalmdpdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#goalmdpdomain"}},[t._v("#")]),t._v(" GoalMDPDomain")]),t._v(" "),a("p",[t._v("This is a typical Goal Markov Decision Process domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("EnumerableTransitions")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Goals")]),t._v(" "),a("li",[t._v("DeterministicInitialized")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("FullyObservable")]),t._v(" "),a("li",[t._v("PositiveCosts")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("GoalMDPDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-13"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-186"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-254"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-254"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-19"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-255"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-255"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-13"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-187"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-256"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-13"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-188"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-257"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-257"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-258"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-258"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-4"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-259"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-259"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-7"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-260"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-260"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-5"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-189"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-261"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-261"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-9"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-190"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-262"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-262"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-13"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-191"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-263"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-263"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-19"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-264"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-264"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-5"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-192"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-265"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-265"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-13"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-193"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-266"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-266"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-13"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-194"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-267"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-267"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-13"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-195"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-268"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-268"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-196"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-269"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-269"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-13"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-197"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-270"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-270"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-5"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-198"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-271"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-271"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-7"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-272"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-272"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-9"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-273"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-273"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-7"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-199"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-274"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-274"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-7"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-200"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-7"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-201"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-275"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-275"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-13"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-202"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-276"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-276"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-14"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its cost specification (must be positive).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function calls "),a("code",[t._v("PositiveCost._is_positive()")]),t._v(" to determine if a value is positive (can be overridden for\nadvanced value types).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-203"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-277"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-277"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-20"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-278"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-278"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-21"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-279"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-279"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-14"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-204"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-280"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-280"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-7"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-205"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-205"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-281"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-281"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-14"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-206"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-206"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-282"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-282"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-7"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-207"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-207"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-283"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-283"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-2"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-284"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-284"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-3"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-285"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-285"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-5"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-286"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-286"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-6"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-287"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-287"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-8"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-288"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-288"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-9"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-289"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-289"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-12"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-290"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-290"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-13"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-291"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-291"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-6"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-208"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-208"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-292"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-292"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-10"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-209"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-209"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-293"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-293"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-14"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-210"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-210"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-294"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-294"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-20"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-295"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-295"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-21"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-296"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-296"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-6"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-211"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-211"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-297"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-297"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-7"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-212"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-212"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-298"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-298"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-14"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-213"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-213"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-299"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-299"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-14"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-214"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-214"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-300"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-300"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-7"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-215"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-215"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-301"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-301"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-14"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-216"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-216"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-302"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-302"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-7"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-217"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-217"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-303"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-303"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-2"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-218"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-218"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-304"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-304"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-14"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-219"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-219"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-305"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-305"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-positive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-positive"}},[t._v("#")]),t._v(" _is_positive "),a("Badge",{attrs:{text:"PositiveCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_positive",sig:{params:[{name:"self"},{name:"cost",annotation:"D.T_value"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Determine if a value is positive (can be overridden for advanced value types).")]),t._v(" "),a("h4",{attrs:{id:"parameters-220"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-220"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("cost")]),t._v(": The cost to evaluate.")])]),t._v(" "),a("h4",{attrs:{id:"returns-306"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-306"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the cost is positive (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-6"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-221"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-221"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-307"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-307"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-8"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-308"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-308"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-9"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-309"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-309"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-10"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-310"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-310"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-8"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-222"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-222"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-311"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-311"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-8"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-223"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-223"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-5"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-312"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-312"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-4"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-224"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-224"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-313"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-313"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-7"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-225"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-225"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-314"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-314"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-14"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-226"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-226"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-315"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-315"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"goalpomdpdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#goalpomdpdomain"}},[t._v("#")]),t._v(" GoalPOMDPDomain")]),t._v(" "),a("p",[t._v("This is a typical Goal Partially Observable Markov Decision Process domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("EnumerableTransitions")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Goals")]),t._v(" "),a("li",[t._v("UncertainInitialized")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("PartiallyObservable")]),t._v(" "),a("li",[t._v("PositiveCosts")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("GoalPOMDPDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-15"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-227"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-227"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-316"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-316"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-22"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-317"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-317"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-15"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-228"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-228"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-318"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-318"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-15"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-229"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-229"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-319"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-319"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-4"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-320"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-320"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-10"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-321"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-321"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-7"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-230"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-230"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-322"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-322"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-15"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-231"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-231"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-323"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-323"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-22"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-324"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-324"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-7"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-232"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-232"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-325"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-325"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-15"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-233"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-233"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-326"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-326"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-15"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-234"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-234"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-327"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-327"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-15"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-235"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-235"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-328"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-328"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-3"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-236"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-236"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-329"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-329"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-15"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-237"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-237"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-330"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-330"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-7"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-238"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-238"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-331"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-331"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-10"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-332"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-332"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-11"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-333"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-333"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-9"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-239"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-239"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-334"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-334"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-9"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-240"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-240"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-8"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-241"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-241"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-335"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-335"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-15"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-242"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-242"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-336"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-336"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-16"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its cost specification (must be positive).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function calls "),a("code",[t._v("PositiveCost._is_positive()")]),t._v(" to determine if a value is positive (can be overridden for\nadvanced value types).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-243"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-243"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-337"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-337"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-23"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-338"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-338"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-24"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-339"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-339"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-16"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-244"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-244"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-340"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-340"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-8"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-245"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-245"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-341"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-341"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-16"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-246"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-246"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-342"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-342"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-8"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-247"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-247"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-343"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-343"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-5"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-344"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-344"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-6"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-345"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-345"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-11"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-346"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-346"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-12"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-347"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-347"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-14"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-348"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-348"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-15"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-349"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-349"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-8"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-248"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-248"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-350"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-350"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-16"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-249"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-249"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-351"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-351"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-23"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-352"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-352"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-24"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-353"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-353"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-8"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-250"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-250"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-354"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-354"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-8"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-251"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-251"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-355"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-355"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-16"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-252"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-252"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-356"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-356"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-16"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-253"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-253"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-357"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-357"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-8"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-254"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-254"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-358"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-358"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-16"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-255"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-255"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-359"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-359"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-8"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-256"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-360"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-360"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-4"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-257"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-257"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-361"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-361"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-16"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-258"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-258"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-362"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-362"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-positive-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-positive-2"}},[t._v("#")]),t._v(" _is_positive "),a("Badge",{attrs:{text:"PositiveCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_positive",sig:{params:[{name:"self"},{name:"cost",annotation:"D.T_value"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Determine if a value is positive (can be overridden for advanced value types).")]),t._v(" "),a("h4",{attrs:{id:"parameters-259"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-259"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("cost")]),t._v(": The cost to evaluate.")])]),t._v(" "),a("h4",{attrs:{id:"returns-363"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-363"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the cost is positive (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-8"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-260"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-260"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-364"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-364"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-11"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-365"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-365"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-12"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-366"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-366"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-12"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-367"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-367"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-10"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-261"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-261"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-368"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-368"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-10"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-262"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-262"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-6"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-369"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-369"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-5"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-263"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-263"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-370"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-370"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-8"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-264"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-264"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-371"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-371"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-16"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-265"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-265"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-372"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-372"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"deterministicplanningdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicplanningdomain"}},[t._v("#")]),t._v(" DeterministicPlanningDomain")]),t._v(" "),a("p",[t._v("This is a typical deterministic planning domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("DeterministicTransitions")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Goals")]),t._v(" "),a("li",[t._v("DeterministicInitialized")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("FullyObservable")]),t._v(" "),a("li",[t._v("PositiveCosts")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("DeterministicPlanningDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-17"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-266"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-266"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-373"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-373"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-25"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-374"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-374"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-17"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-267"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-267"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-375"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-375"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-17"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-268"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-268"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-376"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-376"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-7"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-377"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-377"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-7"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-378"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-378"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-13"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-379"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-379"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-269"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-269"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-380"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-380"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-9"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-270"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-270"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-381"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-381"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-11"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-271"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-271"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-382"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-382"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-17"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-272"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-272"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-383"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-383"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-25"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-384"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-384"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-9"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-273"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-273"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-385"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-385"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-17"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-274"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-274"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-386"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-386"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-17"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-275"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-275"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-387"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-387"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-17"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-276"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-276"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-388"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-388"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-5"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-277"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-277"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-389"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-389"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-17"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-278"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-278"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-390"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-390"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-9"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-279"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-279"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-391"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-391"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-13"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-392"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-392"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-13"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-393"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-393"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-11"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-280"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-280"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-394"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-394"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-11"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-281"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-281"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-9"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-282"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-282"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-395"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-395"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-17"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-283"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-283"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-396"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-396"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-18"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its cost specification (must be positive).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function calls "),a("code",[t._v("PositiveCost._is_positive()")]),t._v(" to determine if a value is positive (can be overridden for\nadvanced value types).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-284"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-284"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-397"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-397"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-26"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-398"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-398"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-27"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-399"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-399"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-18"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-285"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-285"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-400"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-400"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-9"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-286"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-286"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-401"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-401"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-18"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-287"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-287"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-402"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-402"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-9"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-288"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-288"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-403"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-403"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-8"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-404"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-404"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-9"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-405"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-405"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-8"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-406"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-406"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-9"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-407"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-407"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-14"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-408"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-408"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-15"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-409"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-409"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-16"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-410"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-410"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-17"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-411"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-411"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-2"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-289"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-289"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-412"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-412"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-10"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"SingleValueDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-290"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-290"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-413"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-413"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-12"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-291"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-291"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-414"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-414"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-18"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-292"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-292"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-415"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-415"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-26"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-416"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-416"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-27"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-417"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-417"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-10"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-293"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-293"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-418"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-418"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-9"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-294"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-294"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-419"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-419"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-18"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-295"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-295"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-420"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-420"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-18"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-296"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-296"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-421"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-421"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-9"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-297"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-297"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-422"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-422"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-18"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-298"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-298"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-423"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-423"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-9"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-299"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-299"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-424"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-424"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-6"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-300"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-300"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-425"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-425"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-18"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-301"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-301"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-426"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-426"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-positive-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-positive-3"}},[t._v("#")]),t._v(" _is_positive "),a("Badge",{attrs:{text:"PositiveCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_positive",sig:{params:[{name:"self"},{name:"cost",annotation:"D.T_value"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Determine if a value is positive (can be overridden for advanced value types).")]),t._v(" "),a("h4",{attrs:{id:"parameters-302"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-302"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("cost")]),t._v(": The cost to evaluate.")])]),t._v(" "),a("h4",{attrs:{id:"returns-427"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-427"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the cost is positive (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-10"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-303"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-303"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-428"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-428"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-14"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-429"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-429"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-15"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-430"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-430"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-14"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-431"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-431"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-12"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-304"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-304"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-432"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-432"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-12"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-305"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-305"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-7"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-433"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-433"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-6"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-306"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-306"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-434"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-434"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-9"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-307"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-307"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-435"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-435"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-18"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-308"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-308"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-436"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-436"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"paralleldomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#paralleldomain"}},[t._v("#")]),t._v(" ParallelDomain")]),t._v(" "),a("p",[t._v("Base class for creating and launching n domains in separate processes.\nEach domain listens for incoming domain requests.\nEach request can indicate which domain should serve it, otherwise the first available\ndomain i is chosen and its id is returned to the incoming request.")]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ParallelDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ParallelDomain",sig:{params:[{name:"domain_factory"},{name:"lambdas",default:"None"},{name:"nb_domains",default:"2"},{name:"ipc_notify",default:"False"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"pipeparalleldomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pipeparalleldomain"}},[t._v("#")]),t._v(" PipeParallelDomain")]),t._v(" "),a("p",[t._v("This class can be used to create and launch n domains in separate processes.\nEach domain listens for incoming domain requests.\nEach request can indicate which domain should serve it, otherwise the first available\ndomain i is chosen and its id is returned to the incoming request.")]),t._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"PipeParallelDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"PipeParallelDomain",sig:{params:[{name:"domain_factory"},{name:"lambdas",default:"None"},{name:"nb_domains",default:"2"},{name:"ipc_notify",default:"False"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"shmparalleldomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#shmparalleldomain"}},[t._v("#")]),t._v(" ShmParallelDomain")]),t._v(" "),a("p",[t._v("This class can be used to create and launch n domains in separate processes\nwith shared memory between the Python processes.\nEach domain listens for incoming domain requests.\nEach request can indicate which domain should serve it, otherwise the first available\ndomain is chosen and its id is returned to the incoming request.")]),t._v(" "),a("h3",{attrs:{id:"constructor-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ShmParallelDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ShmParallelDomain",sig:{params:[{name:"domain_factory"},{name:"shm_proxy"},{name:"lambdas",default:"None"},{name:"nb_domains",default:"2"},{name:"ipc_notify",default:"False"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{570:function(t,e,a){"use strict";a.r(e);var s=a(38),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"domains"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#domains"}},[t._v("#")]),t._v(" domains")]),t._v(" "),a("p",[t._v("This module contains base classes for quickly building domains.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"domain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#domain"}},[t._v("#")]),t._v(" Domain")]),t._v(" "),a("p",[t._v("This is the highest level domain class (inheriting top-level class for each mandatory domain characteristic).")]),t._v(" "),a("p",[t._v("This helper class can be used as the main base class for domains.")]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("p",[t._v('with "..." replaced when needed by a number of classes from following domain characteristics (the ones in\nparentheses are optional):')]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("agent")]),t._v(": MultiAgent -> SingleAgent")]),t._v(" "),a("li",[a("strong",[t._v("concurrency")]),t._v(": Parallel -> Sequential")]),t._v(" "),a("li",[a("strong",[t._v("(constraints)")]),t._v(": Constrained")]),t._v(" "),a("li",[a("strong",[t._v("dynamics")]),t._v(": Environment -> Simulation -> UncertainTransitions -> EnumerableTransitions\n-> DeterministicTransitions")]),t._v(" "),a("li",[a("strong",[t._v("events")]),t._v(": Events -> Actions -> UnrestrictedActions")]),t._v(" "),a("li",[a("strong",[t._v("(goals)")]),t._v(": Goals")]),t._v(" "),a("li",[a("strong",[t._v("(initialization)")]),t._v(": Initializable -> UncertainInitialized -> DeterministicInitialized")]),t._v(" "),a("li",[a("strong",[t._v("memory")]),t._v(": History -> FiniteHistory -> Markovian -> Memoryless")]),t._v(" "),a("li",[a("strong",[t._v("observability")]),t._v(": PartiallyObservable -> TransformedObservable -> FullyObservable")]),t._v(" "),a("li",[a("strong",[t._v("(renderability)")]),t._v(": Renderable")]),t._v(" "),a("li",[a("strong",[t._v("value")]),t._v(": Rewards -> PositiveCosts")])]),t._v(" "),a("h3",{attrs:{id:"check-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"solve-with"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-2"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-2"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-3"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-2"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-2"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"Optional[int]"}}}),t._v(" "),a("p",[t._v("Get the memory max length (or None if unbounded).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always None by default because the memory length is unbounded at this level.")])]),t._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length (or None if unbounded).")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-2"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-2"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-3"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-2"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-2"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-2"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-2"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"state-step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"rldomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rldomain"}},[t._v("#")]),t._v(" RLDomain")]),t._v(" "),a("p",[t._v("This is a typical Reinforcement Learning domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("Environment")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Initializable")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("TransformedObservable")]),t._v(" "),a("li",[t._v("Rewards")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-3"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-4"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-3"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-3"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-3"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-4"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-3"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-3"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-3"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-3"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"solve-with-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-2"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-4"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-5"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-6"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-4"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-2"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-4"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-52"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-2"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-53"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-2"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-54"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-3"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-55"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-2"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-56"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-4"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-57"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-5"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-58"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-6"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-59"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-2"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-60"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-4"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-61"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-4"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-62"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-2"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-63"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-4"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-64"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-2"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-65"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-4"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-66"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-67"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"state-reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-68"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-2"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-69"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-70"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"multiagentrldomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multiagentrldomain"}},[t._v("#")]),t._v(" MultiAgentRLDomain")]),t._v(" "),a("p",[t._v("This is a typical multi-agent Reinforcement Learning domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("MultiAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("Environment")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Initializable")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("TransformedObservable")]),t._v(" "),a("li",[t._v("Rewards")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-5"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-53"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-71"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-7"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-72"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-5"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-54"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-73"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-5"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-55"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-74"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-3"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-56"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-75"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-5"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-57"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-76"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-7"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-77"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-5"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-58"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-78"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-5"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-59"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-79"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-5"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-60"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-80"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-5"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-61"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-81"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-3"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-82"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"solve-with-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-3"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-62"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-83"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-63"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-84"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-6"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-64"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-85"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-8"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-86"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-9"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-87"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-6"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-65"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-88"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-3"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-66"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-89"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-6"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-67"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-90"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-3"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-68"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-91"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-4"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-92"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-5"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-93"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-4"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-69"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-94"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-6"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-70"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-95"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-8"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-96"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-9"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-97"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-3"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-71"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-98"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-6"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-72"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-99"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-6"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-73"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-100"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-3"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-74"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-101"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-6"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-75"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-102"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-3"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-76"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-103"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-6"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-77"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-104"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-4"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-105"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"state-reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-2"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-106"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-3"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-78"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-107"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-6"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-79"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-108"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"statelesssimulatordomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#statelesssimulatordomain"}},[t._v("#")]),t._v(" StatelessSimulatorDomain")]),t._v(" "),a("p",[t._v("This is a typical stateless simulator domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("Simulation")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("TransformedObservable")]),t._v(" "),a("li",[t._v("Rewards")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("StatelessSimulatorDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-7"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-80"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-109"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-10"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-110"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-7"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-81"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-111"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-7"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-82"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-112"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-5"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-83"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-113"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-7"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-84"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-114"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-10"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-115"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-7"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-85"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-116"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-7"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-86"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-117"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-7"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-87"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-118"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-7"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-88"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-119"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-89"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-120"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-90"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-4"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-91"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-121"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-7"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-92"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-122"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-8"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-93"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-123"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-11"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-124"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-12"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-125"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-8"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-94"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-126"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-4"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-95"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-127"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-8"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-96"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-128"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-4"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-97"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-129"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-6"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-130"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-7"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-131"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-6"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-98"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-132"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-8"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-99"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-133"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-11"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-134"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-12"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-135"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-4"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-100"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-136"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-8"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-101"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-137"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-8"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-102"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-138"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-4"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-103"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-139"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-8"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-104"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-140"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-4"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-105"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-141"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-8"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-106"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-142"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-107"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-143"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-2"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-108"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-109"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-144"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-4"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-110"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-145"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-8"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-111"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-146"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"mdpdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mdpdomain"}},[t._v("#")]),t._v(" MDPDomain")]),t._v(" "),a("p",[t._v("This is a typical Markov Decision Process domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("EnumerableTransitions")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("DeterministicInitialized")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("FullyObservable")]),t._v(" "),a("li",[t._v("Rewards")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MDPDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-9"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-112"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-147"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-13"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-148"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-9"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-113"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-149"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-9"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-114"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-150"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-151"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-152"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-115"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-153"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-7"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-116"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-154"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-9"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-117"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-155"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-13"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-156"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-118"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-157"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-9"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-119"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-158"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-9"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-120"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-159"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-9"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-121"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-160"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-9"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-122"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-161"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-123"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-162"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-163"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-5"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-164"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-124"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-165"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-3"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-125"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-5"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-126"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-166"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-9"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-127"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-167"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-10"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-128"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-168"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-14"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-169"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-15"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-170"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-10"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-129"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-171"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-5"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-130"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-172"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-10"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-131"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-173"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-5"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-132"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-174"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-2"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-175"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-3"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-176"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-2"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-177"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-3"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-178"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-8"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-179"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-9"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-180"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-2"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-133"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-181"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-8"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-134"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-182"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-10"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-135"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-183"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-14"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-184"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-15"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-185"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-2"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-136"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-186"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-5"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-137"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-187"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-10"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-138"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-188"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-10"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-139"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-189"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-5"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-140"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-190"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-10"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-141"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-191"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-5"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-142"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-192"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-10"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-143"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-193"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-2"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-144"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-194"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-2"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-195"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-3"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-196"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-6"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-197"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-145"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-198"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-4"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-146"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-3"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-199"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-2"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-147"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-200"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-5"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-148"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-201"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-10"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-149"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-202"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"pomdpdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pomdpdomain"}},[t._v("#")]),t._v(" POMDPDomain")]),t._v(" "),a("p",[t._v("This is a typical Partially Observable Markov Decision Process domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("EnumerableTransitions")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("UncertainInitialized")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("PartiallyObservable")]),t._v(" "),a("li",[t._v("Rewards")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("POMDPDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-11"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-150"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-203"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-16"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-204"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-11"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-151"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-205"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-205"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-11"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-152"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-206"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-206"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-4"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-207"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-207"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-3"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-153"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-208"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-208"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-11"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-154"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-209"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-209"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-16"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-210"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-210"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-3"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-155"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-211"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-211"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-11"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-156"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-212"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-212"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-11"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-157"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-213"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-213"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-11"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-158"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-214"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-214"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-11"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-159"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-215"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-215"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-3"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-160"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-216"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-216"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-4"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-217"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-217"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-7"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-218"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-218"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-5"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-161"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-219"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-219"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-5"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-162"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-6"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-163"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-220"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-220"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-11"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-164"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-221"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-221"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-12"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-165"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-222"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-222"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-17"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-223"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-223"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-18"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-224"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-224"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-12"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-166"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-225"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-225"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-6"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-167"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-226"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-226"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-12"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-168"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-227"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-227"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-6"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-169"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-228"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-228"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-5"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-229"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-229"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-6"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-230"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-230"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-10"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-231"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-231"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-11"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-232"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-232"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-4"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-170"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-233"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-233"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-12"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-171"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-234"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-234"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-17"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-235"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-235"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-18"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-236"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-236"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-4"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-172"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-237"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-237"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-6"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-173"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-238"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-238"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-12"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-174"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-239"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-239"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-12"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-175"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-240"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-240"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-6"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-176"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-241"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-241"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-12"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-177"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-242"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-242"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-6"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-178"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-243"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-243"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-12"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-179"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-244"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-244"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-4"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-180"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-245"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-245"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-5"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-246"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-246"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-6"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-247"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-247"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-8"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-248"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-248"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-6"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-181"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-249"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-249"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-6"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-182"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-6"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-4"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-250"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-250"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-3"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-183"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-251"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-251"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-6"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-184"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-252"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-252"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-12"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-185"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-253"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-253"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"goalmdpdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#goalmdpdomain"}},[t._v("#")]),t._v(" GoalMDPDomain")]),t._v(" "),a("p",[t._v("This is a typical Goal Markov Decision Process domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("EnumerableTransitions")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Goals")]),t._v(" "),a("li",[t._v("DeterministicInitialized")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("FullyObservable")]),t._v(" "),a("li",[t._v("PositiveCosts")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("GoalMDPDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-13"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-186"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-254"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-254"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-19"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-255"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-255"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-13"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-187"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-256"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-13"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-188"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-257"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-257"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-258"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-258"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-4"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-259"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-259"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-7"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-260"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-260"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-5"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-189"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-261"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-261"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-9"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-190"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-262"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-262"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-13"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-191"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-263"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-263"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-19"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-264"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-264"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-5"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-192"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-265"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-265"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-13"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-193"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-266"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-266"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-13"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-194"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-267"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-267"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-13"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-195"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-268"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-268"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-196"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-269"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-269"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-13"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-197"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-270"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-270"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-5"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-198"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-271"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-271"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-7"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-272"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-272"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-9"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-273"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-273"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-7"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-199"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-274"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-274"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-7"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-200"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-7"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-7"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-201"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-275"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-275"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-13"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-202"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-276"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-276"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-14"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its cost specification (must be positive).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function calls "),a("code",[t._v("PositiveCost._is_positive()")]),t._v(" to determine if a value is positive (can be overridden for\nadvanced value types).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-203"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-277"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-277"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-20"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-278"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-278"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-21"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-279"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-279"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-14"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-204"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-280"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-280"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-7"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-205"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-205"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-281"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-281"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-14"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-206"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-206"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-282"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-282"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-7"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-207"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-207"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-283"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-283"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-2"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-284"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-284"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-3"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-285"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-285"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-5"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-286"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-286"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-6"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-287"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-287"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-8"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-288"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-288"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-9"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-289"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-289"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-12"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-290"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-290"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-13"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-291"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-291"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-6"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-208"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-208"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-292"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-292"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-10"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-209"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-209"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-293"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-293"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-14"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-210"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-210"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-294"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-294"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-20"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-295"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-295"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-21"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-296"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-296"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-6"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-211"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-211"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-297"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-297"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-7"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-212"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-212"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-298"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-298"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-14"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-213"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-213"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-299"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-299"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-14"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-214"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-214"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-300"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-300"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-7"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-215"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-215"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-301"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-301"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-14"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-216"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-216"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-302"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-302"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-7"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-217"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-217"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-303"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-303"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-2"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-218"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-218"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-304"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-304"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-14"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-219"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-219"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-305"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-305"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-positive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-positive"}},[t._v("#")]),t._v(" _is_positive "),a("Badge",{attrs:{text:"PositiveCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_positive",sig:{params:[{name:"self"},{name:"cost",annotation:"D.T_value"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Determine if a value is positive (can be overridden for advanced value types).")]),t._v(" "),a("h4",{attrs:{id:"parameters-220"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-220"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("cost")]),t._v(": The cost to evaluate.")])]),t._v(" "),a("h4",{attrs:{id:"returns-306"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-306"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the cost is positive (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-6"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-221"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-221"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-307"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-307"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-8"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-308"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-308"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-9"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-309"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-309"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-10"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-310"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-310"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-8"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-222"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-222"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-311"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-311"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-8"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-223"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-223"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-8"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-5"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-312"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-312"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-4"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-224"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-224"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-313"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-313"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-7"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-225"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-225"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-314"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-314"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-14"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-226"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-226"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-315"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-315"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"goalpomdpdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#goalpomdpdomain"}},[t._v("#")]),t._v(" GoalPOMDPDomain")]),t._v(" "),a("p",[t._v("This is a typical Goal Partially Observable Markov Decision Process domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("EnumerableTransitions")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Goals")]),t._v(" "),a("li",[t._v("UncertainInitialized")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("PartiallyObservable")]),t._v(" "),a("li",[t._v("PositiveCosts")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("GoalPOMDPDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-15"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-227"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-227"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-316"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-316"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-22"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-317"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-317"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-15"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-228"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-228"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-318"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-318"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-15"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-229"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-229"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-319"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-319"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-4"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-320"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-320"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-10"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-321"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-321"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-7"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-230"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-230"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-322"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-322"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-15"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-231"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-231"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-323"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-323"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-22"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-324"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-324"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-7"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-232"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-232"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-325"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-325"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-15"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-233"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-233"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-326"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-326"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-15"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-234"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-234"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-327"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-327"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-15"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-235"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-235"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-328"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-328"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-3"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-236"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-236"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-329"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-329"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-15"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-237"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-237"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-330"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-330"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-7"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-238"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-238"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-331"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-331"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-10"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-332"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-332"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-11"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-333"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-333"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-9"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-239"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-239"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-334"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-334"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-9"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-240"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-240"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-9"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-8"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-241"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-241"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-335"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-335"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-15"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-242"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-242"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-336"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-336"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-16"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its cost specification (must be positive).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function calls "),a("code",[t._v("PositiveCost._is_positive()")]),t._v(" to determine if a value is positive (can be overridden for\nadvanced value types).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-243"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-243"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-337"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-337"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-23"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-338"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-338"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-24"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-339"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-339"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-16"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-244"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-244"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-340"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-340"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-8"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-245"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-245"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-341"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-341"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-16"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-246"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-246"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-342"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-342"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-8"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-247"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-247"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-343"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-343"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-5"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-344"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-344"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-6"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-345"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-345"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-11"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-346"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-346"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-12"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-347"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-347"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-14"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-348"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-348"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-15"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-349"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-349"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-8"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-248"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-248"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-350"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-350"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-16"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-249"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-249"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-351"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-351"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-23"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-352"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-352"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-24"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-353"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-353"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-8"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-250"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-250"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-354"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-354"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-8"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-251"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-251"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-355"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-355"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-16"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-252"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-252"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-356"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-356"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-16"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-253"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-253"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-357"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-357"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-8"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-254"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-254"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-358"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-358"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-16"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-255"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-255"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-359"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-359"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-8"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-256"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-360"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-360"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-4"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-257"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-257"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-361"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-361"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-16"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-258"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-258"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-362"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-362"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-positive-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-positive-2"}},[t._v("#")]),t._v(" _is_positive "),a("Badge",{attrs:{text:"PositiveCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_positive",sig:{params:[{name:"self"},{name:"cost",annotation:"D.T_value"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Determine if a value is positive (can be overridden for advanced value types).")]),t._v(" "),a("h4",{attrs:{id:"parameters-259"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-259"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("cost")]),t._v(": The cost to evaluate.")])]),t._v(" "),a("h4",{attrs:{id:"returns-363"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-363"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the cost is positive (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-8"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-260"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-260"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-364"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-364"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-11"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-365"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-365"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-12"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-366"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-366"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-12"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-367"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-367"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-10"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-261"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-261"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-368"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-368"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-10"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-262"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-262"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-10"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-6"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-369"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-369"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-5"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-263"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-263"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-370"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-370"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-8"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-264"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-264"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-371"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-371"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-16"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-265"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-265"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-372"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-372"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"deterministicplanningdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicplanningdomain"}},[t._v("#")]),t._v(" DeterministicPlanningDomain")]),t._v(" "),a("p",[t._v("This is a typical deterministic planning domain class.")]),t._v(" "),a("p",[t._v("This helper class can be used as an alternate base class for domains, inheriting the following:")]),t._v(" "),a("ul",[a("li",[t._v("Domain")]),t._v(" "),a("li",[t._v("SingleAgent")]),t._v(" "),a("li",[t._v("Sequential")]),t._v(" "),a("li",[t._v("DeterministicTransitions")]),t._v(" "),a("li",[t._v("Actions")]),t._v(" "),a("li",[t._v("Goals")]),t._v(" "),a("li",[t._v("DeterministicInitialized")]),t._v(" "),a("li",[t._v("Markovian")]),t._v(" "),a("li",[t._v("FullyObservable")]),t._v(" "),a("li",[t._v("PositiveCosts")])]),t._v(" "),a("p",[t._v("Typical use:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("DeterministicPlanningDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("It is also possible to refine any alternate base class, like for instance:")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("D")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("RLDomain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" FullyObservable"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])])]),t._v(" "),a("h3",{attrs:{id:"check-value-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-17"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-266"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-266"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-373"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-373"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-25"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-374"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-374"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-17"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-267"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-267"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-375"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-375"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-17"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-268"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-268"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-376"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-376"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-7"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-377"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-377"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-7"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-378"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-378"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-13"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-379"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-379"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-269"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-269"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-380"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-380"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-9"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-270"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-270"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-381"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-381"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-11"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-271"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-271"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-382"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-382"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-17"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-272"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-272"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-383"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-383"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-25"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-384"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-384"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-9"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-273"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-273"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-385"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-385"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-17"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-274"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-274"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-386"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-386"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-17"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-275"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-275"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-387"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-387"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-17"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-276"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-276"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-388"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-388"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-5"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-277"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-277"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-389"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-389"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-17"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-278"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-278"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-390"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-390"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-9"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-279"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-279"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-391"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-391"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-13"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-392"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-392"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-13"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-393"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-393"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-11"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-280"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-280"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-394"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-394"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-11"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-281"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-281"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-11"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-9"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-282"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-282"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-395"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-395"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-17"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-283"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-283"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-396"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-396"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"check-value-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-18"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its cost specification (must be positive).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function calls "),a("code",[t._v("PositiveCost._is_positive()")]),t._v(" to determine if a value is positive (can be overridden for\nadvanced value types).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-284"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-284"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-397"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-397"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-26"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-398"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-398"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-27"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-399"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-399"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-18"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-285"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-285"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-400"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-400"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-9"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-286"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-286"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-401"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-401"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-18"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-287"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-287"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-402"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-402"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-9"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-288"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-288"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-403"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-403"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-8"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-404"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-404"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-9"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-405"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-405"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-8"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-406"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-406"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-9"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-407"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-407"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-14"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-408"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-408"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-15"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-409"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-409"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-16"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-410"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-410"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-17"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-411"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-411"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-2"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-289"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-289"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-412"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-412"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-10"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"SingleValueDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-290"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-290"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-413"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-413"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-12"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-291"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-291"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-414"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-414"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-18"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-292"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-292"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-415"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-415"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-26"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-416"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-416"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-27"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-417"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-417"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-10"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-293"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-293"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-418"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-418"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-9"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-294"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-294"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-419"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-419"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-18"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-295"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-295"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-420"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-420"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-18"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-296"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-296"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-421"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-421"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-9"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-297"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-297"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-422"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-422"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-18"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-298"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-298"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-423"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-423"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-9"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-299"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-299"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-424"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-424"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-6"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-300"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-300"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-425"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-425"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-18"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-301"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-301"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-426"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-426"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-positive-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-positive-3"}},[t._v("#")]),t._v(" _is_positive "),a("Badge",{attrs:{text:"PositiveCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_positive",sig:{params:[{name:"self"},{name:"cost",annotation:"D.T_value"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Determine if a value is positive (can be overridden for advanced value types).")]),t._v(" "),a("h4",{attrs:{id:"parameters-302"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-302"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("cost")]),t._v(": The cost to evaluate.")])]),t._v(" "),a("h4",{attrs:{id:"returns-427"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-427"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the cost is positive (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-10"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-303"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-303"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-428"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-428"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-14"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-429"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-429"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-15"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-430"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-430"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"reset-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-14"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-431"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-431"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-12"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-304"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-304"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-432"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-432"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-12"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-305"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-305"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-12"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-7"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-433"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-433"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-6"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-306"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-306"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-434"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-434"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-9"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-307"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-307"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-435"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-435"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-18"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-308"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-308"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-436"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-436"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"paralleldomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#paralleldomain"}},[t._v("#")]),t._v(" ParallelDomain")]),t._v(" "),a("p",[t._v("Base class for creating and launching n domains in separate processes.\nEach domain listens for incoming domain requests.\nEach request can indicate which domain should serve it, otherwise the first available\ndomain i is chosen and its id is returned to the incoming request.")]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ParallelDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ParallelDomain",sig:{params:[{name:"domain_factory"},{name:"lambdas",default:"None"},{name:"nb_domains",default:"2"},{name:"ipc_notify",default:"False"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"pipeparalleldomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pipeparalleldomain"}},[t._v("#")]),t._v(" PipeParallelDomain")]),t._v(" "),a("p",[t._v("This class can be used to create and launch n domains in separate processes.\nEach domain listens for incoming domain requests.\nEach request can indicate which domain should serve it, otherwise the first available\ndomain i is chosen and its id is returned to the incoming request.")]),t._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"PipeParallelDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"PipeParallelDomain",sig:{params:[{name:"domain_factory"},{name:"lambdas",default:"None"},{name:"nb_domains",default:"2"},{name:"ipc_notify",default:"False"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h2",{attrs:{id:"shmparalleldomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#shmparalleldomain"}},[t._v("#")]),t._v(" ShmParallelDomain")]),t._v(" "),a("p",[t._v("This class can be used to create and launch n domains in separate processes\nwith shared memory between the Python processes.\nEach domain listens for incoming domain requests.\nEach request can indicate which domain should serve it, otherwise the first available\ndomain is chosen and its id is returned to the incoming request.")]),t._v(" "),a("h3",{attrs:{id:"constructor-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"ShmParallelDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"ShmParallelDomain",sig:{params:[{name:"domain_factory"},{name:"shm_proxy"},{name:"lambdas",default:"None"},{name:"nb_domains",default:"2"},{name:"ipc_notify",default:"False"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/59.a8651d17.js b/assets/js/59.420ff0ea.js similarity index 96% rename from assets/js/59.a8651d17.js rename to assets/js/59.420ff0ea.js index aaab23dcc3..c11f75fdf4 100644 --- a/assets/js/59.a8651d17.js +++ b/assets/js/59.420ff0ea.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{570:function(t,e,a){"use strict";a.r(e);var r=a(38),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"hub-domain-flight-planning-weather-interpolator-weather-tools-common-utils"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-flight-planning-weather-interpolator-weather-tools-common-utils"}},[t._v("#")]),t._v(" hub.domain.flight_planning.weather_interpolator.weather_tools.common_utils")]),t._v(" "),a("p",[t._v("Created on Tue May 3 12:09:06 2016 !!!\nUseful custom functions callable by many part of the projects\n@author: popo")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"get-regular-interval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-regular-interval"}},[t._v("#")]),t._v(" get_regular_interval")]),t._v(" "),a("skdecide-signature",{attrs:{name:"get_regular_interval",sig:{params:[{name:"l"},{name:"n",default:"100"}]}}}),t._v(" "),a("p",[t._v("Return a regular array of length n of a sorted iterable")]),t._v(" "),a("p",[t._v(":param l: A sorted iterable\n:param n: Number of discrete value we want\n:return: a sorted regular numpy array from l[0] to l[-1] with n step\n:rtype: "),a("code",[t._v("numpy.array")])]),t._v(" "),a("h2",{attrs:{id:"intersect-interval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#intersect-interval"}},[t._v("#")]),t._v(" intersect_interval")]),t._v(" "),a("skdecide-signature",{attrs:{name:"intersect_interval",sig:{params:[{name:"x"},{name:"y"}]}}}),t._v(" "),a("p",[t._v("X and Y given by [low_bound, high_bound]")])],1)}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{571:function(t,e,a){"use strict";a.r(e);var r=a(38),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"hub-domain-flight-planning-weather-interpolator-weather-tools-common-utils"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-flight-planning-weather-interpolator-weather-tools-common-utils"}},[t._v("#")]),t._v(" hub.domain.flight_planning.weather_interpolator.weather_tools.common_utils")]),t._v(" "),a("p",[t._v("Created on Tue May 3 12:09:06 2016 !!!\nUseful custom functions callable by many part of the projects\n@author: popo")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"get-regular-interval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-regular-interval"}},[t._v("#")]),t._v(" get_regular_interval")]),t._v(" "),a("skdecide-signature",{attrs:{name:"get_regular_interval",sig:{params:[{name:"l"},{name:"n",default:"100"}]}}}),t._v(" "),a("p",[t._v("Return a regular array of length n of a sorted iterable")]),t._v(" "),a("p",[t._v(":param l: A sorted iterable\n:param n: Number of discrete value we want\n:return: a sorted regular numpy array from l[0] to l[-1] with n step\n:rtype: "),a("code",[t._v("numpy.array")])]),t._v(" "),a("h2",{attrs:{id:"intersect-interval"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#intersect-interval"}},[t._v("#")]),t._v(" intersect_interval")]),t._v(" "),a("skdecide-signature",{attrs:{name:"intersect_interval",sig:{params:[{name:"x"},{name:"y"}]}}}),t._v(" "),a("p",[t._v("X and Y given by [low_bound, high_bound]")])],1)}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/60.6c2f4c3a.js b/assets/js/60.a4aa7c25.js similarity index 97% rename from assets/js/60.6c2f4c3a.js rename to assets/js/60.a4aa7c25.js index 9c495cfa41..c222d0b5a6 100644 --- a/assets/js/60.6c2f4c3a.js +++ b/assets/js/60.a4aa7c25.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{571:function(t,e,a){"use strict";a.r(e);var r=a(38),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"hub-domain-flight-planning-weather-interpolator-weather-tools-interpolator-intergrid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-flight-planning-weather-interpolator-weather-tools-interpolator-intergrid"}},[t._v("#")]),t._v(" hub.domain.flight_planning.weather_interpolator.weather_tools.interpolator.intergrid")]),t._v(" "),a("p",[t._v("Created on Mon Apr 18 11:53:11 2016")]),t._v(" "),a("p",[t._v("@author: popo")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"intergrid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#intergrid"}},[t._v("#")]),t._v(" Intergrid")]),t._v(" "),a("p",[t._v("Created on Mon Apr 18 11:53:11 2016")]),t._v(" "),a("p",[t._v("@author: popo")]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"Intergrid",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"Intergrid",sig:{params:[{name:"griddata"},{name:"lo"},{name:"hi"},{name:"maps",default:"[]"},{name:"copy",default:"True"},{name:"verbose",default:"1"},{name:"order",default:"1"},{name:"prefilter",default:"False"},{name:"mode",default:"nearest"},{name:"cval",default:"None"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h3",{attrs:{id:"at"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#at"}},[t._v("#")]),t._v(" at "),a("Badge",{attrs:{text:"Intergrid",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"at",sig:{params:[{name:"self"},{name:"X"},{name:"out",default:"None"}]}}}),t._v(" "),a("p",[t._v("query_values = Intergrid(...) ( query_points npt x dim )")]),t._v(" "),a("h3",{attrs:{id:"map-to-uniform-grid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#map-to-uniform-grid"}},[t._v("#")]),t._v(" _map_to_uniform_grid "),a("Badge",{attrs:{text:"Intergrid",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_map_to_uniform_grid",sig:{params:[{name:"self"},{name:"X"}]}}}),t._v(" "),a("p",[t._v("clip, map X linear / nonlinear inplace")])],1)}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{572:function(t,e,a){"use strict";a.r(e);var r=a(38),n=Object(r.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"hub-domain-flight-planning-weather-interpolator-weather-tools-interpolator-intergrid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-flight-planning-weather-interpolator-weather-tools-interpolator-intergrid"}},[t._v("#")]),t._v(" hub.domain.flight_planning.weather_interpolator.weather_tools.interpolator.intergrid")]),t._v(" "),a("p",[t._v("Created on Mon Apr 18 11:53:11 2016")]),t._v(" "),a("p",[t._v("@author: popo")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"intergrid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#intergrid"}},[t._v("#")]),t._v(" Intergrid")]),t._v(" "),a("p",[t._v("Created on Mon Apr 18 11:53:11 2016")]),t._v(" "),a("p",[t._v("@author: popo")]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"Intergrid",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"Intergrid",sig:{params:[{name:"griddata"},{name:"lo"},{name:"hi"},{name:"maps",default:"[]"},{name:"copy",default:"True"},{name:"verbose",default:"1"},{name:"order",default:"1"},{name:"prefilter",default:"False"},{name:"mode",default:"nearest"},{name:"cval",default:"None"}]}}}),t._v(" "),a("p",[t._v("Initialize self. See help(type(self)) for accurate signature.")]),t._v(" "),a("h3",{attrs:{id:"at"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#at"}},[t._v("#")]),t._v(" at "),a("Badge",{attrs:{text:"Intergrid",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"at",sig:{params:[{name:"self"},{name:"X"},{name:"out",default:"None"}]}}}),t._v(" "),a("p",[t._v("query_values = Intergrid(...) ( query_points npt x dim )")]),t._v(" "),a("h3",{attrs:{id:"map-to-uniform-grid"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#map-to-uniform-grid"}},[t._v("#")]),t._v(" _map_to_uniform_grid "),a("Badge",{attrs:{text:"Intergrid",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_map_to_uniform_grid",sig:{params:[{name:"self"},{name:"X"}]}}}),t._v(" "),a("p",[t._v("clip, map X linear / nonlinear inplace")])],1)}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/61.8673455c.js b/assets/js/61.45618eff.js similarity index 99% rename from assets/js/61.8673455c.js rename to assets/js/61.45618eff.js index 4f0cdcacb9..300dad75fd 100644 --- a/assets/js/61.8673455c.js +++ b/assets/js/61.45618eff.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{572:function(t,e,a){"use strict";a.r(e);var s=a(38),i=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"hub-domain-flight-planning-weather-interpolator-weather-tools-std-atm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-flight-planning-weather-interpolator-weather-tools-std-atm"}},[t._v("#")]),t._v(" hub.domain.flight_planning.weather_interpolator.weather_tools.std_atm")]),t._v(" "),a("p",[t._v("Calculate standard atmosphere parametres.")]),t._v(" "),a("p",[t._v("Calculates standard atmosphere parametres, using the 1976 International\nStandard Atmosphere. The default units for the input and output are defined\nin default_units.py")]),t._v(" "),a("p",[t._v("All altitudes are geopotential altitudes (i.e. it is assumed that there is\nno variation with altitude of the acceleration due to gravity).")]),t._v(" "),a("p",[t._v("Works up to 84.852 km (278,386 ft) altitude.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"alt2temp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2temp"}},[t._v("#")]),t._v(" alt2temp")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2temp",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"},{name:"temp_units",default:"C"}]}}}),t._v(" "),a("p",[t._v("Return the standard temperature for the specified altitude. Altitude\nunits may be feet ('ft'), metres ('m'), statute miles, ('sm') or\nnautical miles ('nm'). Temperature units may be degrees C, F, K or R\n('C', 'F', 'K' or 'R')")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the standard temperature (in default temperature units) at\n5,000 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp(5000)\n5.0939999999999941")])])])]),t._v(" "),a("p",[t._v("Calculate the standard temperature in deg F at sea level:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp(0, temp_units = 'F')\n59.0")])])])]),t._v(" "),a("p",[t._v("Calculate the standard temperature in deg K at 11,000 m:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp(11000, alt_units = 'm', temp_units = 'K')\n216.64999999999998")])])])]),t._v(" "),a("p",[t._v("Calculate the standard temperature at 11 statute miles in deg R:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp(11, alt_units = 'sm', temp_units = 'R')\n389.96999999999997")])])])]),t._v(" "),a("p",[t._v("The input value may be an expression:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp(11 * 5280, temp_units = 'R')\n389.96999999999997")])])])]),t._v(" "),a("h2",{attrs:{id:"alt2temp-ratio"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2temp-ratio"}},[t._v("#")]),t._v(" alt2temp_ratio")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2temp_ratio",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the temperature ratio (temperature / standard temperature for\nsea level). The altitude is specified in feet ('ft'), metres ('m'),\nstatute miles, ('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the temperature ratio at 8,000 (default altitude units)")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp_ratio(8000)\n0.94499531494013533")])])])]),t._v(" "),a("p",[t._v("Calculate the temperature ratio at 8,000 m.")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp_ratio(8000, alt_units = 'm')\n0.81953843484296374")])])])]),t._v(" "),a("h2",{attrs:{id:"isa2temp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#isa2temp"}},[t._v("#")]),t._v(" isa2temp")]),t._v(" "),a("skdecide-signature",{attrs:{name:"isa2temp",sig:{params:[{name:"ISA_dev"},{name:"altitude"},{name:"temp_units",default:"C"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the temperature that is a specified amount warmer or cooler\nthan the standard temperature for the altitude.")]),t._v(" "),a("p",[t._v("The temperature may be in deg C, F, K or R.")]),t._v(" "),a("p",[t._v("The altitude may be in feet ('ft'), metres ('m'), kilometres ('km'),\nstatute miles, ('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Determine the temperature that is 10 deg (default temperature units) warmer\nthan the standard temperature at 8,000 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("isa2temp(10, 8000)\n9.1503999999999905")])])])]),t._v(" "),a("p",[t._v("Determine the temperature that is 25 degrees K cooler than the standard\ntemperature at 2000 m.")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("isa2temp(-25, 2000, temp_units = 'K', alt_units = 'm')\n250.14999999999998")])])])]),t._v(" "),a("h2",{attrs:{id:"temp2isa"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temp2isa"}},[t._v("#")]),t._v(" temp2isa")]),t._v(" "),a("skdecide-signature",{attrs:{name:"temp2isa",sig:{params:[{name:"temp"},{name:"altitude"},{name:"temp_units",default:"C"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the amount that the specified temperature is warmer or cooler\nthan the standard temperature for the altitude.")]),t._v(" "),a("p",[t._v("The temperature may be in deg C, F, K or R.")]),t._v(" "),a("p",[t._v("The altitude may be in feet ('ft'), metres ('m'), kilometres ('km'),\nstatute miles, ('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Determine the ISA deviation for a temperature of 30 deg (default\ntemperature units) at an altitude of 2000 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("temp2isa(30, 2000)\n18.962400000000002")])])])]),t._v(" "),a("p",[t._v("Determine the ISA deviation in degrees F for a temperature of 45 deg F\nat an altitude of 1000 m:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("temp2isa(45, 1000, temp_units = 'F', alt_units = 'm')\n-2.2999999999999972")])])])]),t._v(" "),a("h2",{attrs:{id:"alt2press-ratio"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2press-ratio"}},[t._v("#")]),t._v(" alt2press_ratio")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2press_ratio",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the pressure ratio (atmospheric pressure / standard pressure\nfor sea level). The altitude is specified in feet ('ft'), metres ('m'),\nstatute miles, ('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the pressure ratio at 5000 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press_ratio(5000)\n0.8320481158727735")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure ratio at 1000 m:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press_ratio(1000, alt_units = 'm')\n0.88699304638887044")])])])]),t._v(" "),a("p",[t._v("The functions are only implemented at altitudes of 84.852 km and lower.")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press_ratio(90, alt_units = 'km')\nTraceback (most recent call last):\nFile '', line 1, in ?\nFile './std_atm.py', line 189, in alt2press_ratio\nif H <= 20:\nValueError: This function is only implemented for altitudes of 84.852 km and below.")])])])]),t._v(" "),a("h2",{attrs:{id:"alt2press"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2press"}},[t._v("#")]),t._v(" alt2press")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2press",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"},{name:"press_units",default:"in HG"}]}}}),t._v(" "),a("p",[t._v("Return the atmospheric pressure for a given altitude, with the\naltitude in feet ('ft'), metres ('m'), statute miles, ('sm') or nautical\nmiles ('nm'), and the pressure in inches of HG ('in HG'), mm of HG\n('mm HG'), psi, lb per sq. ft ('psf'), pa, hpa or mb.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the pressure in inches of mercury at 5,000 (default altitude\nunits):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press(5000)\n24.895961289464015")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure in pounds per square foot at 10,000 (default\naltitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press(10000, press_units = 'psf')\n1455.3301392981359")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure in pascal at 20 km:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press(20, press_units = 'pa', alt_units = 'km')\n5474.8827144576408")])])])]),t._v(" "),a("h2",{attrs:{id:"pressure-alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pressure-alt"}},[t._v("#")]),t._v(" pressure_alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"pressure_alt",sig:{params:[{name:"H"},{name:"alt_setting"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the pressure altitude, given the barometric altitude and the\naltimeter setting.")]),t._v(" "),a("p",[t._v("Altimeter setting may have units of inches of HG, or hpa or mb. If the\naltimeter setting value is less than 35, the units are assumed to be\nin HG, otherwise they are assumed to be hpa. The altimeter setting must\nbe in the range of 25 to 35 inches of mercury.")]),t._v(" "),a("p",[t._v("The altitude may have units of feet ('ft'), metres ('m'), statute miles,\n('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the pressure altitude for 1,000 (default altitude units)\nbarometric altitude with altimeter setting of 30.92 in HG:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("pressure_alt(1000, 30.92)\n88.612734282205338")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure altitude for 1,000 (default altitude units)\nbarometric altitude with altimeter setting of 1008 mb:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("pressure_alt(1000, 1008)\n1143.6503495627171")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure altitude in metres for 304.8 m barometric\naltitude with altimeter setting of 1008 mb:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("pressure_alt(304.8, 1008, alt_units = 'm')\n348.58462654671621")])])])]),t._v(" "),a("h2",{attrs:{id:"qnh"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#qnh"}},[t._v("#")]),t._v(" QNH")]),t._v(" "),a("skdecide-signature",{attrs:{name:"QNH",sig:{params:[{name:"HP"},{name:"H"},{name:"alt_units",default:"ft"},{name:"alt_setting_units",default:"in HG"}]}}}),t._v(" "),a("p",[t._v("Return the altimeter setting, given the pressure altitude (HP) and the\nbarometric altitude (H).")]),t._v(" "),a("h2",{attrs:{id:"alt2density-ratio"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2density-ratio"}},[t._v("#")]),t._v(" alt2density_ratio")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2density_ratio",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the density ratio (atmospheric density / standard density\nfor sea level). The altitude is specified in feet ('ft'), metres ('m'),\nstatute miles, ('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the density ratio at 7,500 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density_ratio(7500)\n0.79825819881753035")])])])]),t._v(" "),a("p",[t._v("Calculate the density ratio at 2 km:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density_ratio(2, alt_units = 'km')\n0.8216246960994622")])])])]),t._v(" "),a("h2",{attrs:{id:"alt2density"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2density"}},[t._v("#")]),t._v(" alt2density")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2density",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"},{name:"density_units",default:"lb/ft**3"}]}}}),t._v(" "),a("p",[t._v("Return the density given the pressure altitude. The altitude is\nspecified in feet ('ft'), metres ('m'), statute miles, ('sm') or\nnautical miles ('nm').")]),t._v(" "),a("p",[t._v("The desired density units are specified as 'lb/ft"),a("strong",[t._v("3', 'slug/ft")]),t._v("3' or\n'kg/m**3'.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the density in lb / ft cubed at 7,500 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density(7500)\n0.061046199847730374")])])])]),t._v(" "),a("p",[t._v("Calculate the density in slugs / ft cubed at 5,000 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density(5000, density_units = 'slug/ft**3')\n0.0020480982157718704")])])])]),t._v(" "),a("p",[t._v("Calculate the density in kg / m cubed at 0 (default altitude units:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density(0, density_units = 'kg/m**3')\n1.2250000000000001")])])])]),t._v(" "),a("p",[t._v("Calculate the density in kg / m cubed at 81,000 m:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density(81000, density_units = 'kg/m**3', alt_units = 'm')\n1.3320480184052337e-05")])])])]),t._v(" "),a("h2",{attrs:{id:"density2alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#density2alt"}},[t._v("#")]),t._v(" density2alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"density2alt",sig:{params:[{name:"Rho"},{name:"density_units",default:"lb/ft**3"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the altitude corresponding to the specified density, with\ndensity in 'lb/ft"),a("strong",[t._v("3', 'slug/ft")]),t._v("3' or 'kg/m**3'.")]),t._v(" "),a("p",[t._v("The altitude is specified in feet ('ft'), metres ('m'), statute miles,\n('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the altitude in default altitude units where the density is\n0.056475 in default density units:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density2alt(.056475)\n9999.8040934937271")])])])]),t._v(" "),a("p",[t._v("Calculate the altitude in metres where the density is 0.018012 kg / m\ncubed:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density2alt(.018012, alt_units = 'm', density_units = 'kg/m**3')\n29999.978688508152")])])])]),t._v(" "),a("h2",{attrs:{id:"density-ratio2alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#density-ratio2alt"}},[t._v("#")]),t._v(" density_ratio2alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"density_ratio2alt",sig:{params:[{name:"DR"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the altitude for the specified density ratio. The altitude is in\nfeet ('ft'), metres ('m'), statute miles, ('sm') or nautical miles\n('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the altitude in default altitude units where the density ratio is\n1:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_ratio2alt(1)\n0.0")])])])]),t._v(" "),a("p",[t._v("Calculate the altitude in feet where the density ratio is 0.5:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_ratio2alt(.5)\n21859.50324995652")])])])]),t._v(" "),a("p",[t._v("Calculate the altitude in km where the density ratio is 0.1")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_ratio2alt(.1, alt_units = 'km')\n17.9048674520646")])])])]),t._v(" "),a("h2",{attrs:{id:"density-alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#density-alt"}},[t._v("#")]),t._v(" density_alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"density_alt",sig:{params:[{name:"H"},{name:"T"},{name:"alt_setting",default:"29.9213"},{name:"DP",default:"FALSE"},{name:"RH",default:"0.0"},{name:"alt_units",default:"ft"},{name:"temp_units",default:"C"}]}}}),t._v(" "),a("p",[t._v("Return density altitude, given the pressure altitude and the\ntemperature with altitudes in units of feet ('ft'), metres ('m'),\nstatute miles, ('sm') or nautical miles ('nm'), and temperature in units\nof deg C, F, K or R ('C', 'F', 'K' or 'R').")]),t._v(" "),a("p",[t._v("Mandatory parametres:\nH = altitude\nT = temperature")]),t._v(" "),a("p",[t._v("Optional parametres:\nalt_setting = altimeter setting (defaults to 29.9213 if not provided\nDP = dew point\nRH = relative humidity\nalt_units = units for the altitude. 'ft', 'm', or 'km'.\ntemp_units = units for the temperature and dew point. 'C', 'F', 'K'\nor 'R'.")]),t._v(" "),a("p",[t._v("The altimeter setting units are assumed to be inches of HG, unless the\nvalue is greater than 35. In this case the units are assumed to be mb.")]),t._v(" "),a("p",[t._v("If the dew point or relative humidity are not specified, the air is\nassumed to be completely dry. If both the dew point and relative humidity\nare specified, the relative humidity value is ignored.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("The method is from: http://wahiduddin.net/calc/density_altitude.htm")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the density altitude in default altitude units for a pressure\naltitude of 7000 default altitude units and a temperature of 15 deg\n(default temperature units). The altimeter setting is not specified, so it\ndefaults to standard pressure of 29.9213 in HG or 1013.25 mb:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(7000, 15)\n8595.3465863232504")])])])]),t._v(" "),a("p",[t._v("Calculate the density altitude in default altitude units for a pressure\naltitude of 7000 default altitude units and a temperature of 85 deg F.\nThe altimeter setting is not specified, so it defaults to standard pressure\nof 29.9213 in HG or 1013.25 mb. The dew point and relative humidity are\nnot specified, so the air is assumed to be dry:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(7000, 85, temp_units = 'F')\n10159.10696106757")])])])]),t._v(" "),a("p",[t._v("Calculate the density altitude in default altitude units for a pressure\naltitude of 7000 default altitude units, an altimeter setting of 29.80 and\na temperature of 85 deg F and a dew point of 55 deg F:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(7000, 85, 29.80, 55, temp_units = 'F')\n10522.776013011618")])])])]),t._v(" "),a("p",[t._v("Calculate the density altitude in metres for a pressure altitude of\n2000 m, an altimeter setting of 1010 mb, a temperature of 15 deg (default\ntemperature units) and a relative humidity of 50%:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(2000, 15, 1010, alt_units = 'm', RH = 0.5)\n2529.8230634449737")])])])]),t._v(" "),a("p",[t._v("The dew point may be specified in one of two ways: as the fourth\nargument on the command line, or via the keyword argument DP.")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(2000, 15, 1010, alt_units = 'm', DP = 5)\n2530.7528237990618")])])])]),t._v(" "),a("p",[t._v("The relative humidity must be in the range of 0 to 1:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(2000, 15, 1010, alt_units = 'm', RH = 1.1)\nTraceback (most recent call last):\nFile '', line 1, in ?\nFile 'std_atm.py', line 533, in density_alt\nraise ValueError, 'The relative humidity must be in the range of 0 to 1.'\nValueError: The relative humidity must be in the range of 0 to 1.")])])])]),t._v(" "),a("h2",{attrs:{id:"sat-press"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sat-press"}},[t._v("#")]),t._v(" _sat_press")]),t._v(" "),a("skdecide-signature",{attrs:{name:"_sat_press",sig:{params:[{name:"T"}]}}}),t._v(" "),a("p",[t._v("Return the saturation pressure in mb of the water vapour, given\ntemperature in deg C. Equation from:\nhttp://wahiduddin.net/calc/density_altitude.htm")]),t._v(" "),a("h2",{attrs:{id:"sat-press-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sat-press-2"}},[t._v("#")]),t._v(" sat_press")]),t._v(" "),a("skdecide-signature",{attrs:{name:"sat_press",sig:{params:[{name:"T",default:"FALSE"},{name:"DP",default:"FALSE"},{name:"RH",default:"0.0"},{name:"temp_units",default:"C"},{name:"press_units",default:"in HG"}]}}}),t._v(" "),a("p",[t._v("Return the saturated vapour pressure of water. Either the dew point, or\nthe temperature and the relative humidity must be specified. If both the\ndew point and relative humidity are specified, the relative humidity value\nis ignored.")]),t._v(" "),a("p",[t._v("If the temperature and dew point are both specified, the dew point cannot\nbe greater than the temperature:")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("sat_press(T=10, DP=11)\nTraceback (most recent call last):\nFile '', line 1, in \nFile 'std_atm.py', line 795, in sat_press\nraise ValueError, 'The dew point cannot be greater than the temperature.'\nValueError: The dew point cannot be greater than the temperature.")])])])]),t._v(" "),a("p",[t._v("Dew point is 11 deg (default temperature units). Find the water vapour\npressure in default pressure units:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("sat_press(DP=11)\n0.38741015927568667")])])])]),t._v(" "),a("p",[t._v("Dew point is 65 deg F. Find the water vapour pressure in default pressure units:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("sat_press(DP=65, temp_units = 'F')\n0.62207710701956165")])])])]),t._v(" "),a("p",[t._v("Dew point is 212 deg F (the boiling point of water at sea level).\nFind the water vapour pressure in lb per sq. inch:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("sat_press(DP=212, temp_units = 'F', press_units = 'psi')\n14.696764873564959")])])])]),t._v(" "),a("p",[t._v("Temperature is 30 deg C. Find the water vapour pressure in default pressure units:\nfor 50% relative humidity:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("sat_press(T=30, RH = 0.5)\n0.62647666996057927")])])])]),t._v(" "),a("h2",{attrs:{id:"dry-press"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dry-press"}},[t._v("#")]),t._v(" dry_press")]),t._v(" "),a("skdecide-signature",{attrs:{name:"dry_press",sig:{params:[{name:"H"},{name:"Pv"},{name:"alt_setting",default:"29.9213"},{name:"alt_units",default:"ft"},{name:"press_units",default:"in HG"}]}}}),t._v(" "),a("p",[t._v("Returns dry air pressure, i.e. the total air pressure, less the water\nvapour pressure.")]),t._v(" "),a("h2",{attrs:{id:"density-alt2temp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#density-alt2temp"}},[t._v("#")]),t._v(" density_alt2temp")]),t._v(" "),a("skdecide-signature",{attrs:{name:"density_alt2temp",sig:{params:[{name:"density_alt_seek"},{name:"press_alt"},{name:"alt_units",default:"ft"},{name:"temp_units",default:"C"}]}}}),t._v(" "),a("p",[t._v("Return temperature to achieve a desired density altitude.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("h2",{attrs:{id:"density-alt-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#density-alt-table"}},[t._v("#")]),t._v(" density_alt_table")]),t._v(" "),a("skdecide-signature",{attrs:{name:"density_alt_table",sig:{params:[{name:"density_alt_seek"},{name:"alt_range",default:"2000"},{name:"alt_inc",default:"100"},{name:"alt_units",default:"ft"},{name:"temp_units",default:"C"},{name:"multi_units",default:"False"},{name:"file",default:""},{name:"format",default:"text"}]}}}),t._v(" "),a("p",[t._v("Return a text or html table of required temperature vs pressure altitude.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("h2",{attrs:{id:"press2alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#press2alt"}},[t._v("#")]),t._v(" press2alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"press2alt",sig:{params:[{name:"P"},{name:"press_units",default:"in HG"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the altitude corresponding to the specified pressure, with\npressure in inches of HG, mm of HG, psi, psf (lb per sq. ft), pa, hpa or\nmb.")]),t._v(" "),a("p",[t._v("The altitude is in units of feet ('ft'), metres ('m'), statute miles,\n('sm') or nautical miles ('nm')")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the pressure altitude in feet for a pressure of 31.0185 inches\nof HG:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press2alt(31.0185)\n-999.98992888235091")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure altitude in feet for a pressure of\n1455.33 lb sq. ft:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press2alt(1455.33, press_units = 'psf')\n10000.002466564831")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure altitude in metres for a pressure of\n90.3415 mm HG:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press2alt(90.3415, press_units = 'mm HG', alt_units = 'm')\n15000.025465320754")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure altitude in metres for a pressure of\n1171.86 pascal:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press2alt(1171.86, press_units = 'pa', alt_units = 'm')\n30000.029510365184")])])])]),t._v(" "),a("h2",{attrs:{id:"press-ratio2alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#press-ratio2alt"}},[t._v("#")]),t._v(" press_ratio2alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"press_ratio2alt",sig:{params:[{name:"PR"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the pressure ratio for the specified altitude. The altitude is\nspecified in feet ('ft'), metres ('m'), statute miles, ('sm') or\nnautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the altitude in feet where the pressure ratio is 0.5:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press_ratio2alt(.5)\n17969.990746028907")])])])]),t._v(" "),a("p",[t._v("Calculate the altitude in metres where the pressure ratio is 0.1:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press_ratio2alt(.1, alt_units = 'm')\n16096.249927559489")])])])]),t._v(" "),a("h2",{attrs:{id:"temp2speed-of-sound"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temp2speed-of-sound"}},[t._v("#")]),t._v(" temp2speed_of_sound")]),t._v(" "),a("skdecide-signature",{attrs:{name:"temp2speed_of_sound",sig:{params:[{name:"temp"},{name:"temp_units",default:"C"},{name:"speed_units",default:"kt"}]}}}),t._v(" "),a("p",[t._v("Return the speed of sound, given the air temperature.")]),t._v(" "),a("p",[t._v("The temperature units may be deg C, F, K or R ('C', 'F', 'K' or 'R').")]),t._v(" "),a("p",[t._v("The speed units may be 'kt', 'mph', 'km/h', 'm/s' and 'ft/s'.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Determine speed of sound in knots at 15 deg (default temperature units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("temp2speed_of_sound(15)\n661.47882487301808")])])])]),t._v(" "),a("p",[t._v("Determine speed of sound in mph at 120 deg F:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("temp2speed_of_sound(120, speed_units = 'mph', temp_units = 'F')\n804.73500154991291")])])])])],1)}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{573:function(t,e,a){"use strict";a.r(e);var s=a(38),i=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"hub-domain-flight-planning-weather-interpolator-weather-tools-std-atm"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-flight-planning-weather-interpolator-weather-tools-std-atm"}},[t._v("#")]),t._v(" hub.domain.flight_planning.weather_interpolator.weather_tools.std_atm")]),t._v(" "),a("p",[t._v("Calculate standard atmosphere parametres.")]),t._v(" "),a("p",[t._v("Calculates standard atmosphere parametres, using the 1976 International\nStandard Atmosphere. The default units for the input and output are defined\nin default_units.py")]),t._v(" "),a("p",[t._v("All altitudes are geopotential altitudes (i.e. it is assumed that there is\nno variation with altitude of the acceleration due to gravity).")]),t._v(" "),a("p",[t._v("Works up to 84.852 km (278,386 ft) altitude.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"alt2temp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2temp"}},[t._v("#")]),t._v(" alt2temp")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2temp",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"},{name:"temp_units",default:"C"}]}}}),t._v(" "),a("p",[t._v("Return the standard temperature for the specified altitude. Altitude\nunits may be feet ('ft'), metres ('m'), statute miles, ('sm') or\nnautical miles ('nm'). Temperature units may be degrees C, F, K or R\n('C', 'F', 'K' or 'R')")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the standard temperature (in default temperature units) at\n5,000 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp(5000)\n5.0939999999999941")])])])]),t._v(" "),a("p",[t._v("Calculate the standard temperature in deg F at sea level:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp(0, temp_units = 'F')\n59.0")])])])]),t._v(" "),a("p",[t._v("Calculate the standard temperature in deg K at 11,000 m:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp(11000, alt_units = 'm', temp_units = 'K')\n216.64999999999998")])])])]),t._v(" "),a("p",[t._v("Calculate the standard temperature at 11 statute miles in deg R:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp(11, alt_units = 'sm', temp_units = 'R')\n389.96999999999997")])])])]),t._v(" "),a("p",[t._v("The input value may be an expression:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp(11 * 5280, temp_units = 'R')\n389.96999999999997")])])])]),t._v(" "),a("h2",{attrs:{id:"alt2temp-ratio"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2temp-ratio"}},[t._v("#")]),t._v(" alt2temp_ratio")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2temp_ratio",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the temperature ratio (temperature / standard temperature for\nsea level). The altitude is specified in feet ('ft'), metres ('m'),\nstatute miles, ('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the temperature ratio at 8,000 (default altitude units)")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp_ratio(8000)\n0.94499531494013533")])])])]),t._v(" "),a("p",[t._v("Calculate the temperature ratio at 8,000 m.")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2temp_ratio(8000, alt_units = 'm')\n0.81953843484296374")])])])]),t._v(" "),a("h2",{attrs:{id:"isa2temp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#isa2temp"}},[t._v("#")]),t._v(" isa2temp")]),t._v(" "),a("skdecide-signature",{attrs:{name:"isa2temp",sig:{params:[{name:"ISA_dev"},{name:"altitude"},{name:"temp_units",default:"C"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the temperature that is a specified amount warmer or cooler\nthan the standard temperature for the altitude.")]),t._v(" "),a("p",[t._v("The temperature may be in deg C, F, K or R.")]),t._v(" "),a("p",[t._v("The altitude may be in feet ('ft'), metres ('m'), kilometres ('km'),\nstatute miles, ('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Determine the temperature that is 10 deg (default temperature units) warmer\nthan the standard temperature at 8,000 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("isa2temp(10, 8000)\n9.1503999999999905")])])])]),t._v(" "),a("p",[t._v("Determine the temperature that is 25 degrees K cooler than the standard\ntemperature at 2000 m.")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("isa2temp(-25, 2000, temp_units = 'K', alt_units = 'm')\n250.14999999999998")])])])]),t._v(" "),a("h2",{attrs:{id:"temp2isa"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temp2isa"}},[t._v("#")]),t._v(" temp2isa")]),t._v(" "),a("skdecide-signature",{attrs:{name:"temp2isa",sig:{params:[{name:"temp"},{name:"altitude"},{name:"temp_units",default:"C"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the amount that the specified temperature is warmer or cooler\nthan the standard temperature for the altitude.")]),t._v(" "),a("p",[t._v("The temperature may be in deg C, F, K or R.")]),t._v(" "),a("p",[t._v("The altitude may be in feet ('ft'), metres ('m'), kilometres ('km'),\nstatute miles, ('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Determine the ISA deviation for a temperature of 30 deg (default\ntemperature units) at an altitude of 2000 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("temp2isa(30, 2000)\n18.962400000000002")])])])]),t._v(" "),a("p",[t._v("Determine the ISA deviation in degrees F for a temperature of 45 deg F\nat an altitude of 1000 m:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("temp2isa(45, 1000, temp_units = 'F', alt_units = 'm')\n-2.2999999999999972")])])])]),t._v(" "),a("h2",{attrs:{id:"alt2press-ratio"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2press-ratio"}},[t._v("#")]),t._v(" alt2press_ratio")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2press_ratio",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the pressure ratio (atmospheric pressure / standard pressure\nfor sea level). The altitude is specified in feet ('ft'), metres ('m'),\nstatute miles, ('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the pressure ratio at 5000 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press_ratio(5000)\n0.8320481158727735")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure ratio at 1000 m:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press_ratio(1000, alt_units = 'm')\n0.88699304638887044")])])])]),t._v(" "),a("p",[t._v("The functions are only implemented at altitudes of 84.852 km and lower.")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press_ratio(90, alt_units = 'km')\nTraceback (most recent call last):\nFile '', line 1, in ?\nFile './std_atm.py', line 189, in alt2press_ratio\nif H <= 20:\nValueError: This function is only implemented for altitudes of 84.852 km and below.")])])])]),t._v(" "),a("h2",{attrs:{id:"alt2press"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2press"}},[t._v("#")]),t._v(" alt2press")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2press",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"},{name:"press_units",default:"in HG"}]}}}),t._v(" "),a("p",[t._v("Return the atmospheric pressure for a given altitude, with the\naltitude in feet ('ft'), metres ('m'), statute miles, ('sm') or nautical\nmiles ('nm'), and the pressure in inches of HG ('in HG'), mm of HG\n('mm HG'), psi, lb per sq. ft ('psf'), pa, hpa or mb.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the pressure in inches of mercury at 5,000 (default altitude\nunits):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press(5000)\n24.895961289464015")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure in pounds per square foot at 10,000 (default\naltitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press(10000, press_units = 'psf')\n1455.3301392981359")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure in pascal at 20 km:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2press(20, press_units = 'pa', alt_units = 'km')\n5474.8827144576408")])])])]),t._v(" "),a("h2",{attrs:{id:"pressure-alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pressure-alt"}},[t._v("#")]),t._v(" pressure_alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"pressure_alt",sig:{params:[{name:"H"},{name:"alt_setting"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the pressure altitude, given the barometric altitude and the\naltimeter setting.")]),t._v(" "),a("p",[t._v("Altimeter setting may have units of inches of HG, or hpa or mb. If the\naltimeter setting value is less than 35, the units are assumed to be\nin HG, otherwise they are assumed to be hpa. The altimeter setting must\nbe in the range of 25 to 35 inches of mercury.")]),t._v(" "),a("p",[t._v("The altitude may have units of feet ('ft'), metres ('m'), statute miles,\n('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the pressure altitude for 1,000 (default altitude units)\nbarometric altitude with altimeter setting of 30.92 in HG:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("pressure_alt(1000, 30.92)\n88.612734282205338")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure altitude for 1,000 (default altitude units)\nbarometric altitude with altimeter setting of 1008 mb:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("pressure_alt(1000, 1008)\n1143.6503495627171")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure altitude in metres for 304.8 m barometric\naltitude with altimeter setting of 1008 mb:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("pressure_alt(304.8, 1008, alt_units = 'm')\n348.58462654671621")])])])]),t._v(" "),a("h2",{attrs:{id:"qnh"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#qnh"}},[t._v("#")]),t._v(" QNH")]),t._v(" "),a("skdecide-signature",{attrs:{name:"QNH",sig:{params:[{name:"HP"},{name:"H"},{name:"alt_units",default:"ft"},{name:"alt_setting_units",default:"in HG"}]}}}),t._v(" "),a("p",[t._v("Return the altimeter setting, given the pressure altitude (HP) and the\nbarometric altitude (H).")]),t._v(" "),a("h2",{attrs:{id:"alt2density-ratio"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2density-ratio"}},[t._v("#")]),t._v(" alt2density_ratio")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2density_ratio",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the density ratio (atmospheric density / standard density\nfor sea level). The altitude is specified in feet ('ft'), metres ('m'),\nstatute miles, ('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the density ratio at 7,500 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density_ratio(7500)\n0.79825819881753035")])])])]),t._v(" "),a("p",[t._v("Calculate the density ratio at 2 km:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density_ratio(2, alt_units = 'km')\n0.8216246960994622")])])])]),t._v(" "),a("h2",{attrs:{id:"alt2density"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#alt2density"}},[t._v("#")]),t._v(" alt2density")]),t._v(" "),a("skdecide-signature",{attrs:{name:"alt2density",sig:{params:[{name:"H"},{name:"alt_units",default:"ft"},{name:"density_units",default:"lb/ft**3"}]}}}),t._v(" "),a("p",[t._v("Return the density given the pressure altitude. The altitude is\nspecified in feet ('ft'), metres ('m'), statute miles, ('sm') or\nnautical miles ('nm').")]),t._v(" "),a("p",[t._v("The desired density units are specified as 'lb/ft"),a("strong",[t._v("3', 'slug/ft")]),t._v("3' or\n'kg/m**3'.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the density in lb / ft cubed at 7,500 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density(7500)\n0.061046199847730374")])])])]),t._v(" "),a("p",[t._v("Calculate the density in slugs / ft cubed at 5,000 (default altitude units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density(5000, density_units = 'slug/ft**3')\n0.0020480982157718704")])])])]),t._v(" "),a("p",[t._v("Calculate the density in kg / m cubed at 0 (default altitude units:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density(0, density_units = 'kg/m**3')\n1.2250000000000001")])])])]),t._v(" "),a("p",[t._v("Calculate the density in kg / m cubed at 81,000 m:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("alt2density(81000, density_units = 'kg/m**3', alt_units = 'm')\n1.3320480184052337e-05")])])])]),t._v(" "),a("h2",{attrs:{id:"density2alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#density2alt"}},[t._v("#")]),t._v(" density2alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"density2alt",sig:{params:[{name:"Rho"},{name:"density_units",default:"lb/ft**3"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the altitude corresponding to the specified density, with\ndensity in 'lb/ft"),a("strong",[t._v("3', 'slug/ft")]),t._v("3' or 'kg/m**3'.")]),t._v(" "),a("p",[t._v("The altitude is specified in feet ('ft'), metres ('m'), statute miles,\n('sm') or nautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the altitude in default altitude units where the density is\n0.056475 in default density units:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density2alt(.056475)\n9999.8040934937271")])])])]),t._v(" "),a("p",[t._v("Calculate the altitude in metres where the density is 0.018012 kg / m\ncubed:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density2alt(.018012, alt_units = 'm', density_units = 'kg/m**3')\n29999.978688508152")])])])]),t._v(" "),a("h2",{attrs:{id:"density-ratio2alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#density-ratio2alt"}},[t._v("#")]),t._v(" density_ratio2alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"density_ratio2alt",sig:{params:[{name:"DR"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the altitude for the specified density ratio. The altitude is in\nfeet ('ft'), metres ('m'), statute miles, ('sm') or nautical miles\n('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the altitude in default altitude units where the density ratio is\n1:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_ratio2alt(1)\n0.0")])])])]),t._v(" "),a("p",[t._v("Calculate the altitude in feet where the density ratio is 0.5:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_ratio2alt(.5)\n21859.50324995652")])])])]),t._v(" "),a("p",[t._v("Calculate the altitude in km where the density ratio is 0.1")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_ratio2alt(.1, alt_units = 'km')\n17.9048674520646")])])])]),t._v(" "),a("h2",{attrs:{id:"density-alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#density-alt"}},[t._v("#")]),t._v(" density_alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"density_alt",sig:{params:[{name:"H"},{name:"T"},{name:"alt_setting",default:"29.9213"},{name:"DP",default:"FALSE"},{name:"RH",default:"0.0"},{name:"alt_units",default:"ft"},{name:"temp_units",default:"C"}]}}}),t._v(" "),a("p",[t._v("Return density altitude, given the pressure altitude and the\ntemperature with altitudes in units of feet ('ft'), metres ('m'),\nstatute miles, ('sm') or nautical miles ('nm'), and temperature in units\nof deg C, F, K or R ('C', 'F', 'K' or 'R').")]),t._v(" "),a("p",[t._v("Mandatory parametres:\nH = altitude\nT = temperature")]),t._v(" "),a("p",[t._v("Optional parametres:\nalt_setting = altimeter setting (defaults to 29.9213 if not provided\nDP = dew point\nRH = relative humidity\nalt_units = units for the altitude. 'ft', 'm', or 'km'.\ntemp_units = units for the temperature and dew point. 'C', 'F', 'K'\nor 'R'.")]),t._v(" "),a("p",[t._v("The altimeter setting units are assumed to be inches of HG, unless the\nvalue is greater than 35. In this case the units are assumed to be mb.")]),t._v(" "),a("p",[t._v("If the dew point or relative humidity are not specified, the air is\nassumed to be completely dry. If both the dew point and relative humidity\nare specified, the relative humidity value is ignored.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("The method is from: http://wahiduddin.net/calc/density_altitude.htm")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the density altitude in default altitude units for a pressure\naltitude of 7000 default altitude units and a temperature of 15 deg\n(default temperature units). The altimeter setting is not specified, so it\ndefaults to standard pressure of 29.9213 in HG or 1013.25 mb:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(7000, 15)\n8595.3465863232504")])])])]),t._v(" "),a("p",[t._v("Calculate the density altitude in default altitude units for a pressure\naltitude of 7000 default altitude units and a temperature of 85 deg F.\nThe altimeter setting is not specified, so it defaults to standard pressure\nof 29.9213 in HG or 1013.25 mb. The dew point and relative humidity are\nnot specified, so the air is assumed to be dry:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(7000, 85, temp_units = 'F')\n10159.10696106757")])])])]),t._v(" "),a("p",[t._v("Calculate the density altitude in default altitude units for a pressure\naltitude of 7000 default altitude units, an altimeter setting of 29.80 and\na temperature of 85 deg F and a dew point of 55 deg F:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(7000, 85, 29.80, 55, temp_units = 'F')\n10522.776013011618")])])])]),t._v(" "),a("p",[t._v("Calculate the density altitude in metres for a pressure altitude of\n2000 m, an altimeter setting of 1010 mb, a temperature of 15 deg (default\ntemperature units) and a relative humidity of 50%:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(2000, 15, 1010, alt_units = 'm', RH = 0.5)\n2529.8230634449737")])])])]),t._v(" "),a("p",[t._v("The dew point may be specified in one of two ways: as the fourth\nargument on the command line, or via the keyword argument DP.")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(2000, 15, 1010, alt_units = 'm', DP = 5)\n2530.7528237990618")])])])]),t._v(" "),a("p",[t._v("The relative humidity must be in the range of 0 to 1:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("density_alt(2000, 15, 1010, alt_units = 'm', RH = 1.1)\nTraceback (most recent call last):\nFile '', line 1, in ?\nFile 'std_atm.py', line 533, in density_alt\nraise ValueError, 'The relative humidity must be in the range of 0 to 1.'\nValueError: The relative humidity must be in the range of 0 to 1.")])])])]),t._v(" "),a("h2",{attrs:{id:"sat-press"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sat-press"}},[t._v("#")]),t._v(" _sat_press")]),t._v(" "),a("skdecide-signature",{attrs:{name:"_sat_press",sig:{params:[{name:"T"}]}}}),t._v(" "),a("p",[t._v("Return the saturation pressure in mb of the water vapour, given\ntemperature in deg C. Equation from:\nhttp://wahiduddin.net/calc/density_altitude.htm")]),t._v(" "),a("h2",{attrs:{id:"sat-press-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sat-press-2"}},[t._v("#")]),t._v(" sat_press")]),t._v(" "),a("skdecide-signature",{attrs:{name:"sat_press",sig:{params:[{name:"T",default:"FALSE"},{name:"DP",default:"FALSE"},{name:"RH",default:"0.0"},{name:"temp_units",default:"C"},{name:"press_units",default:"in HG"}]}}}),t._v(" "),a("p",[t._v("Return the saturated vapour pressure of water. Either the dew point, or\nthe temperature and the relative humidity must be specified. If both the\ndew point and relative humidity are specified, the relative humidity value\nis ignored.")]),t._v(" "),a("p",[t._v("If the temperature and dew point are both specified, the dew point cannot\nbe greater than the temperature:")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("sat_press(T=10, DP=11)\nTraceback (most recent call last):\nFile '', line 1, in \nFile 'std_atm.py', line 795, in sat_press\nraise ValueError, 'The dew point cannot be greater than the temperature.'\nValueError: The dew point cannot be greater than the temperature.")])])])]),t._v(" "),a("p",[t._v("Dew point is 11 deg (default temperature units). Find the water vapour\npressure in default pressure units:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("sat_press(DP=11)\n0.38741015927568667")])])])]),t._v(" "),a("p",[t._v("Dew point is 65 deg F. Find the water vapour pressure in default pressure units:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("sat_press(DP=65, temp_units = 'F')\n0.62207710701956165")])])])]),t._v(" "),a("p",[t._v("Dew point is 212 deg F (the boiling point of water at sea level).\nFind the water vapour pressure in lb per sq. inch:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("sat_press(DP=212, temp_units = 'F', press_units = 'psi')\n14.696764873564959")])])])]),t._v(" "),a("p",[t._v("Temperature is 30 deg C. Find the water vapour pressure in default pressure units:\nfor 50% relative humidity:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("sat_press(T=30, RH = 0.5)\n0.62647666996057927")])])])]),t._v(" "),a("h2",{attrs:{id:"dry-press"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dry-press"}},[t._v("#")]),t._v(" dry_press")]),t._v(" "),a("skdecide-signature",{attrs:{name:"dry_press",sig:{params:[{name:"H"},{name:"Pv"},{name:"alt_setting",default:"29.9213"},{name:"alt_units",default:"ft"},{name:"press_units",default:"in HG"}]}}}),t._v(" "),a("p",[t._v("Returns dry air pressure, i.e. the total air pressure, less the water\nvapour pressure.")]),t._v(" "),a("h2",{attrs:{id:"density-alt2temp"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#density-alt2temp"}},[t._v("#")]),t._v(" density_alt2temp")]),t._v(" "),a("skdecide-signature",{attrs:{name:"density_alt2temp",sig:{params:[{name:"density_alt_seek"},{name:"press_alt"},{name:"alt_units",default:"ft"},{name:"temp_units",default:"C"}]}}}),t._v(" "),a("p",[t._v("Return temperature to achieve a desired density altitude.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("h2",{attrs:{id:"density-alt-table"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#density-alt-table"}},[t._v("#")]),t._v(" density_alt_table")]),t._v(" "),a("skdecide-signature",{attrs:{name:"density_alt_table",sig:{params:[{name:"density_alt_seek"},{name:"alt_range",default:"2000"},{name:"alt_inc",default:"100"},{name:"alt_units",default:"ft"},{name:"temp_units",default:"C"},{name:"multi_units",default:"False"},{name:"file",default:""},{name:"format",default:"text"}]}}}),t._v(" "),a("p",[t._v("Return a text or html table of required temperature vs pressure altitude.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("h2",{attrs:{id:"press2alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#press2alt"}},[t._v("#")]),t._v(" press2alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"press2alt",sig:{params:[{name:"P"},{name:"press_units",default:"in HG"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the altitude corresponding to the specified pressure, with\npressure in inches of HG, mm of HG, psi, psf (lb per sq. ft), pa, hpa or\nmb.")]),t._v(" "),a("p",[t._v("The altitude is in units of feet ('ft'), metres ('m'), statute miles,\n('sm') or nautical miles ('nm')")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the pressure altitude in feet for a pressure of 31.0185 inches\nof HG:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press2alt(31.0185)\n-999.98992888235091")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure altitude in feet for a pressure of\n1455.33 lb sq. ft:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press2alt(1455.33, press_units = 'psf')\n10000.002466564831")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure altitude in metres for a pressure of\n90.3415 mm HG:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press2alt(90.3415, press_units = 'mm HG', alt_units = 'm')\n15000.025465320754")])])])]),t._v(" "),a("p",[t._v("Calculate the pressure altitude in metres for a pressure of\n1171.86 pascal:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press2alt(1171.86, press_units = 'pa', alt_units = 'm')\n30000.029510365184")])])])]),t._v(" "),a("h2",{attrs:{id:"press-ratio2alt"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#press-ratio2alt"}},[t._v("#")]),t._v(" press_ratio2alt")]),t._v(" "),a("skdecide-signature",{attrs:{name:"press_ratio2alt",sig:{params:[{name:"PR"},{name:"alt_units",default:"ft"}]}}}),t._v(" "),a("p",[t._v("Return the pressure ratio for the specified altitude. The altitude is\nspecified in feet ('ft'), metres ('m'), statute miles, ('sm') or\nnautical miles ('nm').")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Calculate the altitude in feet where the pressure ratio is 0.5:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press_ratio2alt(.5)\n17969.990746028907")])])])]),t._v(" "),a("p",[t._v("Calculate the altitude in metres where the pressure ratio is 0.1:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("press_ratio2alt(.1, alt_units = 'm')\n16096.249927559489")])])])]),t._v(" "),a("h2",{attrs:{id:"temp2speed-of-sound"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#temp2speed-of-sound"}},[t._v("#")]),t._v(" temp2speed_of_sound")]),t._v(" "),a("skdecide-signature",{attrs:{name:"temp2speed_of_sound",sig:{params:[{name:"temp"},{name:"temp_units",default:"C"},{name:"speed_units",default:"kt"}]}}}),t._v(" "),a("p",[t._v("Return the speed of sound, given the air temperature.")]),t._v(" "),a("p",[t._v("The temperature units may be deg C, F, K or R ('C', 'F', 'K' or 'R').")]),t._v(" "),a("p",[t._v("The speed units may be 'kt', 'mph', 'km/h', 'm/s' and 'ft/s'.")]),t._v(" "),a("p",[t._v("If the units are not specified, the units in default_units.py are used.")]),t._v(" "),a("p",[t._v("Examples:")]),t._v(" "),a("p",[t._v("Determine speed of sound in knots at 15 deg (default temperature units):")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("temp2speed_of_sound(15)\n661.47882487301808")])])])]),t._v(" "),a("p",[t._v("Determine speed of sound in mph at 120 deg F:")]),t._v(" "),a("blockquote",[a("blockquote",[a("blockquote",[a("p",[t._v("temp2speed_of_sound(120, speed_units = 'mph', temp_units = 'F')\n804.73500154991291")])])])])],1)}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/62.1afed381.js b/assets/js/62.f1fe426f.js similarity index 99% rename from assets/js/62.1afed381.js rename to assets/js/62.f1fe426f.js index 5cbac2aee8..55fb9f1b20 100644 --- a/assets/js/62.1afed381.js +++ b/assets/js/62.f1fe426f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{573:function(e,t,n){"use strict";n.r(t);var o=n(38),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"hub-domain-flight-planning-weather-interpolator-weather-tools-unit-conversion"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-flight-planning-weather-interpolator-weather-tools-unit-conversion"}},[e._v("#")]),e._v(" hub.domain.flight_planning.weather_interpolator.weather_tools.unit_conversion")]),e._v(" "),n("p",[e._v("Convert between various units.")]),e._v(" "),n("div",{staticClass:"custom-block tip"},[n("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),n("skdecide-summary")],1),e._v(" "),n("h2",{attrs:{id:"area-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#area-conv"}},[e._v("#")]),e._v(" area_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"area_conv",sig:{params:[{name:"A"},{name:"from_units",default:"ft**2"},{name:"to_units",default:"ft**2"}]}}}),e._v(" "),n("p",[e._v("Convert area values between ft"),n("strong",[e._v("2, in")]),e._v("2, m"),n("strong",[e._v("2, km")]),e._v("2, sm"),n("strong",[e._v("2 and nm")]),e._v("2.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to ft**2, then it is converted to\ndesired return value.")]),e._v(" "),n("p",[e._v("The units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Examples:")]),e._v(" "),n("p",[e._v("Convert 1 ft"),n("strong",[e._v("2 to inches")]),e._v("2, with ft**2 already defined as the default\nunits:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("area_conv(1, to_units = 'in**2')\n144.0")])])])]),e._v(" "),n("p",[e._v("Convert 288 square inches to square feet, with ft**2 already defined as the default\nunits:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("area_conv(288, from_units = 'in**2')\n2.0")])])])]),e._v(" "),n("p",[e._v("Convert 10 square metres to square inches:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("area_conv(1000, from_units = 'm"),n("strong",[e._v("2', to_units = 'in")]),e._v("2')\n1550003.1000061999")])])])]),e._v(" "),n("h2",{attrs:{id:"density-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#density-conv"}},[e._v("#")]),e._v(" density_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"density_conv",sig:{params:[{name:"D"},{name:"from_units"},{name:"to_units"}]}}}),e._v(" "),n("p",[e._v("Convert density values between kg/m"),n("strong",[e._v("3, slug/ft")]),e._v("3 and lb/ft**3.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to kg/m**3, then it is converted\nto desired return value.")]),e._v(" "),n("p",[e._v("There are no default units. Both the from_units and the to_units must\nbe specified.")]),e._v(" "),n("p",[e._v("Example:")]),e._v(" "),n("p",[e._v("Convert 1.225 kg per metre cubed to lb per foot cubed:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("density_conv(1.225, from_units = 'kg/m"),n("strong",[e._v("3', to_units = 'lb/ft")]),e._v("3')\n0.076474253491112101")])])])]),e._v(" "),n("h2",{attrs:{id:"force-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#force-conv"}},[e._v("#")]),e._v(" force_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"force_conv",sig:{params:[{name:"F"},{name:"from_units",default:"lb"},{name:"to_units",default:"lb"}]}}}),e._v(" "),n("p",[e._v("Convert force values between lb and N.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to N, then it is converted to the\ndesired return value.")]),e._v(" "),n("h2",{attrs:{id:"len-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#len-conv"}},[e._v("#")]),e._v(" len_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"len_conv",sig:{params:[{name:"L"},{name:"from_units",default:"ft"},{name:"to_units",default:"ft"}]}}}),e._v(" "),n("p",[e._v("Convert length values between ft, in, m, km, sm and nm.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to ft, then it is converted to\ndesired return value.")]),e._v(" "),n("p",[e._v("The units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Examples:")]),e._v(" "),n("p",[e._v("Convert 5280 ft to statute miles, with feet already defined as the default\nunits:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("len_conv(5280, to_units = 'sm')\n1.0")])])])]),e._v(" "),n("p",[e._v("Convert 1 nautical mile to feet, with feet already defined as the default\nunits:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("len_conv(1, from_units = 'nm')\n6076.1154855643044")])])])]),e._v(" "),n("p",[e._v("Convert 1000 metres to kilometres:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("len_conv(1000, from_units = 'm', to_units = 'km')\n0.99999999999999989")])])])]),e._v(" "),n("h2",{attrs:{id:"power-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#power-conv"}},[e._v("#")]),e._v(" power_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"power_conv",sig:{params:[{name:"P"},{name:"from_units",default:"hp"},{name:"to_units",default:"hp"}]}}}),e._v(" "),n("p",[e._v("Convert power values between horsepower, ft-lb/mn, ft-lb/s, watts,\nkilowatts, BTU/hr and BTU/mn.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to hp, then it is converted to the\ndesired return value.\nThe units default to those specified in default_units.py")]),e._v(" "),n("h2",{attrs:{id:"press-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#press-conv"}},[e._v("#")]),e._v(" press_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"press_conv",sig:{params:[{name:"P"},{name:"from_units",default:"in HG"},{name:"to_units",default:"in HG"}]}}}),e._v(" "),n("p",[e._v("Convert pressure values between inches of HG, mm of HG, psi, lb/ft^2,\nhpa and mb.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to Pa, then it is converted to\ndesired return value.\nThe units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Examples:")]),e._v(" "),n("p",[e._v("Convert 1013.25 hpa to default pressure units:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("press_conv(1013.25, from_units = 'hpa')\n29.921331923765198")])])])]),e._v(" "),n("p",[e._v("Convert 29.9213 default pressure units to mm of HG:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("press_conv(29.9213, to_units = 'mm HG')\n760.00128931459176")])])])]),e._v(" "),n("p",[e._v("Convert 2116.22 lb per sq. ft to lb per sq. inch:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("press_conv(2116.22, from_units = 'psf', to_units = 'psi')\n14.695973160069311")])])])]),e._v(" "),n("h2",{attrs:{id:"speed-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#speed-conv"}},[e._v("#")]),e._v(" speed_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"speed_conv",sig:{params:[{name:"S"},{name:"from_units",default:"kt"},{name:"to_units",default:"kt"}]}}}),e._v(" "),n("p",[e._v("Convert speed values between kt, mph, km/h, m/s and ft/s.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to kt, then it is converted to\ndesired return value.\nThe units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Example:")]),e._v(" "),n("p",[e._v("Convert 230 mph to kt:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("speed_conv(230, from_units = 'mph', to_units = 'kt')\n199.86453563714903")])])])]),e._v(" "),n("h2",{attrs:{id:"temp-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#temp-conv"}},[e._v("#")]),e._v(" temp_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"temp_conv",sig:{params:[{name:"T"},{name:"from_units",default:"C"},{name:"to_units",default:"C"}]}}}),e._v(" "),n("p",[e._v("Convert absolute temperature values between deg C, F, K and R.")]),e._v(" "),n("p",[e._v("This function should not be used for relative temperature conversions,\ni.e. temperature differences.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to deg K, then it is converted to\ndesired return value.\nThe units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Examples:")]),e._v(" "),n("p",[e._v("Convert 32 deg F to deg C, with deg C as the default units:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("temp_conv(32, from_units = 'F')\n0.0")])])])]),e._v(" "),n("p",[e._v("Convert 100 deg C to deg F, with deg C as the default units:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("temp_conv(100, to_units = 'F')\n212.0")])])])]),e._v(" "),n("p",[e._v("Convert 59 deg F to deg K")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("temp_conv(59, from_units = 'F', to_units = 'K')\n288.14999999999998")])])])]),e._v(" "),n("h2",{attrs:{id:"vol-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#vol-conv"}},[e._v("#")]),e._v(" vol_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"vol_conv",sig:{params:[{name:"V"},{name:"from_units",default:"ft**3"},{name:"to_units",default:"ft**3"}]}}}),e._v(" "),n("p",[e._v("Convert volume values between USG, ImpGal (Imperial gallons), l (litres), ft"),n("strong",[e._v("3, in")]),e._v("3, m"),n("strong",[e._v("3, km")]),e._v("3, sm"),n("strong",[e._v("3 and nm")]),e._v("3.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to ft**3, then it is converted to\ndesired return value.")]),e._v(" "),n("p",[e._v("The units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Examples:")]),e._v(" "),n("p",[e._v("Convert 1 cubic foot to US gallons, with cubic feet already defined as\nthe default units:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("vol_conv(1, to_units = 'USG')\n7.4805194804946105")])])])]),e._v(" "),n("p",[e._v("Convert 1 Imperial gallon to cubic feet, with cubic feet already defined\nas the default units:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("vol_conv(1, from_units = 'ImpGal')\n0.16054365323600001")])])])]),e._v(" "),n("p",[e._v("Convert 10 US gallon to litres:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("vol_conv(10, from_units = 'USG', to_units = 'l')\n37.854117840125852")])])])]),e._v(" "),n("h2",{attrs:{id:"wt-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#wt-conv"}},[e._v("#")]),e._v(" wt_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"wt_conv",sig:{params:[{name:"W"},{name:"from_units",default:"lb"},{name:"to_units",default:"lb"}]}}}),e._v(" "),n("p",[e._v("Convert weight values between lb and kg.")]),e._v(" "),n("p",[e._v("Purists will yell that lb is a unit of weight, and kg is a unit of mass.\nGet over it.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to kg, then it is converted to the\ndesired return value.")]),e._v(" "),n("p",[e._v("The units default to those specified in default_units.py")]),e._v(" "),n("h2",{attrs:{id:"avgas-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#avgas-conv"}},[e._v("#")]),e._v(" avgas_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"avgas_conv",sig:{params:[{name:"AG"},{name:"from_units",default:"lb"},{name:"to_units",default:"lb"},{name:"temp",default:"15"},{name:"temp_units",default:"C"},{name:"grade",default:"nominal"}]}}}),e._v(" "),n("p",[e._v("Convert aviation gasoline between units of lb, US Gallon (USG),\nImperial Gallon (Imp Gal), litres (l) and kg, assuming nominal\ndensity for aviation gasoline of 6.01 lb per USG.")]),e._v(" "),n("p",[e._v("The units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Note: it was difficult to find authoritative values for aviation gasoline\ndensity. Conventional wisdom is that aviation gasoline has a density of\n6 lb/USG. The Canada Flight Supplement provides densities of:\ntemp density density density\n(deg C) (lb/USG) (lb/ImpGal) (lb/l)\n-40 6.41 7.68 1.69\n-20 6.26 7.50 1.65\n0 6.12 7.33 1.62\n15 6.01 7.20 1.59\n30 5.90 7.07 1.56")]),e._v(" "),n("p",[e._v("However, the Canada Flight Supplement does not provide a source for its\ndensity data. And, the values for the different volume units are not\ncompletly consistent, as they don't vary by exactly the correct factor.\nFor example, if the density at 15 deg C is 6.01 lb/USG, we would expect\nthe density in lb/ImpGal to be 7.22, (given that 1 ImpGal = 1.201 USG)\nyet the Canada Flight Supplement has 7.20.")]),e._v(" "),n("p",[e._v('The only authoritative source for aviation gasoline density that was\nfound on the web was the "Air BP Handbook of Products" on the British\nPetroleum (BP) web site:')]),e._v(" "),n("p",[e._v("")]),e._v(" "),n("p",[e._v("It provides the following density data valid at 15 deg C (the BP document\nonly provides density in kg/m"),n("strong",[e._v("3 - the density in lb/USG were calculated\nby Kevin Horton):\nAvgas density density\nType (kg/m")]),e._v("3) (lb/USG)\n80 690 5.76\n100 695 5.80\n100LL 715 5.97")]),e._v(" "),n("p",[e._v("The available aviation gasoline specifications do not appear to define an\nallowable density range. They do define allowable ranges for various\nparametres of the distillation process - the density of the final product\nwill vary depending on where in the allowable range the refinery is run.\nThus there will be some variation in density from refinery to refinery.")]),e._v(" "),n("p",[e._v("This function uses the 15 deg C density values provided by BP, with the\nvariation with temperature provided in the Canada Flight Supplement.")]),e._v(" "),n("p",[e._v('The grade may be specified as "80", "100" or "100LL". It defaults to\n"100LL" if it is not specified.')]),e._v(" "),n("p",[e._v("The temperature defaults to 15 deg C if it is not specified.")])],1)}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{574:function(e,t,n){"use strict";n.r(t);var o=n(38),a=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"hub-domain-flight-planning-weather-interpolator-weather-tools-unit-conversion"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-flight-planning-weather-interpolator-weather-tools-unit-conversion"}},[e._v("#")]),e._v(" hub.domain.flight_planning.weather_interpolator.weather_tools.unit_conversion")]),e._v(" "),n("p",[e._v("Convert between various units.")]),e._v(" "),n("div",{staticClass:"custom-block tip"},[n("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),n("skdecide-summary")],1),e._v(" "),n("h2",{attrs:{id:"area-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#area-conv"}},[e._v("#")]),e._v(" area_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"area_conv",sig:{params:[{name:"A"},{name:"from_units",default:"ft**2"},{name:"to_units",default:"ft**2"}]}}}),e._v(" "),n("p",[e._v("Convert area values between ft"),n("strong",[e._v("2, in")]),e._v("2, m"),n("strong",[e._v("2, km")]),e._v("2, sm"),n("strong",[e._v("2 and nm")]),e._v("2.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to ft**2, then it is converted to\ndesired return value.")]),e._v(" "),n("p",[e._v("The units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Examples:")]),e._v(" "),n("p",[e._v("Convert 1 ft"),n("strong",[e._v("2 to inches")]),e._v("2, with ft**2 already defined as the default\nunits:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("area_conv(1, to_units = 'in**2')\n144.0")])])])]),e._v(" "),n("p",[e._v("Convert 288 square inches to square feet, with ft**2 already defined as the default\nunits:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("area_conv(288, from_units = 'in**2')\n2.0")])])])]),e._v(" "),n("p",[e._v("Convert 10 square metres to square inches:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("area_conv(1000, from_units = 'm"),n("strong",[e._v("2', to_units = 'in")]),e._v("2')\n1550003.1000061999")])])])]),e._v(" "),n("h2",{attrs:{id:"density-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#density-conv"}},[e._v("#")]),e._v(" density_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"density_conv",sig:{params:[{name:"D"},{name:"from_units"},{name:"to_units"}]}}}),e._v(" "),n("p",[e._v("Convert density values between kg/m"),n("strong",[e._v("3, slug/ft")]),e._v("3 and lb/ft**3.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to kg/m**3, then it is converted\nto desired return value.")]),e._v(" "),n("p",[e._v("There are no default units. Both the from_units and the to_units must\nbe specified.")]),e._v(" "),n("p",[e._v("Example:")]),e._v(" "),n("p",[e._v("Convert 1.225 kg per metre cubed to lb per foot cubed:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("density_conv(1.225, from_units = 'kg/m"),n("strong",[e._v("3', to_units = 'lb/ft")]),e._v("3')\n0.076474253491112101")])])])]),e._v(" "),n("h2",{attrs:{id:"force-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#force-conv"}},[e._v("#")]),e._v(" force_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"force_conv",sig:{params:[{name:"F"},{name:"from_units",default:"lb"},{name:"to_units",default:"lb"}]}}}),e._v(" "),n("p",[e._v("Convert force values between lb and N.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to N, then it is converted to the\ndesired return value.")]),e._v(" "),n("h2",{attrs:{id:"len-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#len-conv"}},[e._v("#")]),e._v(" len_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"len_conv",sig:{params:[{name:"L"},{name:"from_units",default:"ft"},{name:"to_units",default:"ft"}]}}}),e._v(" "),n("p",[e._v("Convert length values between ft, in, m, km, sm and nm.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to ft, then it is converted to\ndesired return value.")]),e._v(" "),n("p",[e._v("The units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Examples:")]),e._v(" "),n("p",[e._v("Convert 5280 ft to statute miles, with feet already defined as the default\nunits:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("len_conv(5280, to_units = 'sm')\n1.0")])])])]),e._v(" "),n("p",[e._v("Convert 1 nautical mile to feet, with feet already defined as the default\nunits:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("len_conv(1, from_units = 'nm')\n6076.1154855643044")])])])]),e._v(" "),n("p",[e._v("Convert 1000 metres to kilometres:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("len_conv(1000, from_units = 'm', to_units = 'km')\n0.99999999999999989")])])])]),e._v(" "),n("h2",{attrs:{id:"power-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#power-conv"}},[e._v("#")]),e._v(" power_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"power_conv",sig:{params:[{name:"P"},{name:"from_units",default:"hp"},{name:"to_units",default:"hp"}]}}}),e._v(" "),n("p",[e._v("Convert power values between horsepower, ft-lb/mn, ft-lb/s, watts,\nkilowatts, BTU/hr and BTU/mn.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to hp, then it is converted to the\ndesired return value.\nThe units default to those specified in default_units.py")]),e._v(" "),n("h2",{attrs:{id:"press-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#press-conv"}},[e._v("#")]),e._v(" press_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"press_conv",sig:{params:[{name:"P"},{name:"from_units",default:"in HG"},{name:"to_units",default:"in HG"}]}}}),e._v(" "),n("p",[e._v("Convert pressure values between inches of HG, mm of HG, psi, lb/ft^2,\nhpa and mb.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to Pa, then it is converted to\ndesired return value.\nThe units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Examples:")]),e._v(" "),n("p",[e._v("Convert 1013.25 hpa to default pressure units:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("press_conv(1013.25, from_units = 'hpa')\n29.921331923765198")])])])]),e._v(" "),n("p",[e._v("Convert 29.9213 default pressure units to mm of HG:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("press_conv(29.9213, to_units = 'mm HG')\n760.00128931459176")])])])]),e._v(" "),n("p",[e._v("Convert 2116.22 lb per sq. ft to lb per sq. inch:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("press_conv(2116.22, from_units = 'psf', to_units = 'psi')\n14.695973160069311")])])])]),e._v(" "),n("h2",{attrs:{id:"speed-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#speed-conv"}},[e._v("#")]),e._v(" speed_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"speed_conv",sig:{params:[{name:"S"},{name:"from_units",default:"kt"},{name:"to_units",default:"kt"}]}}}),e._v(" "),n("p",[e._v("Convert speed values between kt, mph, km/h, m/s and ft/s.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to kt, then it is converted to\ndesired return value.\nThe units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Example:")]),e._v(" "),n("p",[e._v("Convert 230 mph to kt:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("speed_conv(230, from_units = 'mph', to_units = 'kt')\n199.86453563714903")])])])]),e._v(" "),n("h2",{attrs:{id:"temp-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#temp-conv"}},[e._v("#")]),e._v(" temp_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"temp_conv",sig:{params:[{name:"T"},{name:"from_units",default:"C"},{name:"to_units",default:"C"}]}}}),e._v(" "),n("p",[e._v("Convert absolute temperature values between deg C, F, K and R.")]),e._v(" "),n("p",[e._v("This function should not be used for relative temperature conversions,\ni.e. temperature differences.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to deg K, then it is converted to\ndesired return value.\nThe units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Examples:")]),e._v(" "),n("p",[e._v("Convert 32 deg F to deg C, with deg C as the default units:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("temp_conv(32, from_units = 'F')\n0.0")])])])]),e._v(" "),n("p",[e._v("Convert 100 deg C to deg F, with deg C as the default units:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("temp_conv(100, to_units = 'F')\n212.0")])])])]),e._v(" "),n("p",[e._v("Convert 59 deg F to deg K")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("temp_conv(59, from_units = 'F', to_units = 'K')\n288.14999999999998")])])])]),e._v(" "),n("h2",{attrs:{id:"vol-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#vol-conv"}},[e._v("#")]),e._v(" vol_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"vol_conv",sig:{params:[{name:"V"},{name:"from_units",default:"ft**3"},{name:"to_units",default:"ft**3"}]}}}),e._v(" "),n("p",[e._v("Convert volume values between USG, ImpGal (Imperial gallons), l (litres), ft"),n("strong",[e._v("3, in")]),e._v("3, m"),n("strong",[e._v("3, km")]),e._v("3, sm"),n("strong",[e._v("3 and nm")]),e._v("3.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to ft**3, then it is converted to\ndesired return value.")]),e._v(" "),n("p",[e._v("The units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Examples:")]),e._v(" "),n("p",[e._v("Convert 1 cubic foot to US gallons, with cubic feet already defined as\nthe default units:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("vol_conv(1, to_units = 'USG')\n7.4805194804946105")])])])]),e._v(" "),n("p",[e._v("Convert 1 Imperial gallon to cubic feet, with cubic feet already defined\nas the default units:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("vol_conv(1, from_units = 'ImpGal')\n0.16054365323600001")])])])]),e._v(" "),n("p",[e._v("Convert 10 US gallon to litres:")]),e._v(" "),n("blockquote",[n("blockquote",[n("blockquote",[n("p",[e._v("vol_conv(10, from_units = 'USG', to_units = 'l')\n37.854117840125852")])])])]),e._v(" "),n("h2",{attrs:{id:"wt-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#wt-conv"}},[e._v("#")]),e._v(" wt_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"wt_conv",sig:{params:[{name:"W"},{name:"from_units",default:"lb"},{name:"to_units",default:"lb"}]}}}),e._v(" "),n("p",[e._v("Convert weight values between lb and kg.")]),e._v(" "),n("p",[e._v("Purists will yell that lb is a unit of weight, and kg is a unit of mass.\nGet over it.")]),e._v(" "),n("p",[e._v("The incoming value is first converted to kg, then it is converted to the\ndesired return value.")]),e._v(" "),n("p",[e._v("The units default to those specified in default_units.py")]),e._v(" "),n("h2",{attrs:{id:"avgas-conv"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#avgas-conv"}},[e._v("#")]),e._v(" avgas_conv")]),e._v(" "),n("skdecide-signature",{attrs:{name:"avgas_conv",sig:{params:[{name:"AG"},{name:"from_units",default:"lb"},{name:"to_units",default:"lb"},{name:"temp",default:"15"},{name:"temp_units",default:"C"},{name:"grade",default:"nominal"}]}}}),e._v(" "),n("p",[e._v("Convert aviation gasoline between units of lb, US Gallon (USG),\nImperial Gallon (Imp Gal), litres (l) and kg, assuming nominal\ndensity for aviation gasoline of 6.01 lb per USG.")]),e._v(" "),n("p",[e._v("The units default to those specified in default_units.py")]),e._v(" "),n("p",[e._v("Note: it was difficult to find authoritative values for aviation gasoline\ndensity. Conventional wisdom is that aviation gasoline has a density of\n6 lb/USG. The Canada Flight Supplement provides densities of:\ntemp density density density\n(deg C) (lb/USG) (lb/ImpGal) (lb/l)\n-40 6.41 7.68 1.69\n-20 6.26 7.50 1.65\n0 6.12 7.33 1.62\n15 6.01 7.20 1.59\n30 5.90 7.07 1.56")]),e._v(" "),n("p",[e._v("However, the Canada Flight Supplement does not provide a source for its\ndensity data. And, the values for the different volume units are not\ncompletly consistent, as they don't vary by exactly the correct factor.\nFor example, if the density at 15 deg C is 6.01 lb/USG, we would expect\nthe density in lb/ImpGal to be 7.22, (given that 1 ImpGal = 1.201 USG)\nyet the Canada Flight Supplement has 7.20.")]),e._v(" "),n("p",[e._v('The only authoritative source for aviation gasoline density that was\nfound on the web was the "Air BP Handbook of Products" on the British\nPetroleum (BP) web site:')]),e._v(" "),n("p",[e._v("")]),e._v(" "),n("p",[e._v("It provides the following density data valid at 15 deg C (the BP document\nonly provides density in kg/m"),n("strong",[e._v("3 - the density in lb/USG were calculated\nby Kevin Horton):\nAvgas density density\nType (kg/m")]),e._v("3) (lb/USG)\n80 690 5.76\n100 695 5.80\n100LL 715 5.97")]),e._v(" "),n("p",[e._v("The available aviation gasoline specifications do not appear to define an\nallowable density range. They do define allowable ranges for various\nparametres of the distillation process - the density of the final product\nwill vary depending on where in the allowable range the refinery is run.\nThus there will be some variation in density from refinery to refinery.")]),e._v(" "),n("p",[e._v("This function uses the 15 deg C density values provided by BP, with the\nvariation with temperature provided in the Canada Flight Supplement.")]),e._v(" "),n("p",[e._v('The grade may be specified as "80", "100" or "100LL". It defaults to\n"100LL" if it is not specified.')]),e._v(" "),n("p",[e._v("The temperature defaults to 15 deg C if it is not specified.")])],1)}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/63.c0dff1a3.js b/assets/js/63.499bf202.js similarity index 99% rename from assets/js/63.c0dff1a3.js rename to assets/js/63.499bf202.js index 034be88be2..3a315cfd54 100644 --- a/assets/js/63.c0dff1a3.js +++ b/assets/js/63.499bf202.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{574:function(t,e,a){"use strict";a.r(e);var s=a(38),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"hub-domain-gym-gym"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-gym-gym"}},[t._v("#")]),t._v(" hub.domain.gym.gym")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"gymdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gymdomain"}},[t._v("#")]),t._v(" GymDomain")]),t._v(" "),a("p",[t._v("This class wraps an OpenAI Gym environment (gym.env) as a scikit-decide domain.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"GymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"GymDomain",sig:{params:[{name:"gym_env",annotation:"gym.Env"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("gym_env")]),t._v(": The Gym environment (gym.env) to wrap.")])]),t._v(" "),a("h3",{attrs:{id:"check-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable.render()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Renderable._render()")]),t._v(". The\nboilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"solve-with"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"unwrapped"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"GymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the Gym environment (gym.env) and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original Gym environment.")]),t._v(" "),a("h3",{attrs:{id:"check-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-2"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-2"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-3"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-2"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-2"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-2"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-2"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-2"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-2"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-3"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-2"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-2"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-2"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-2"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-2"}},[t._v("#")]),t._v(" _render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable._render()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Renderable._render_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"render-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-from"}},[t._v("#")]),t._v(" _render_from "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Renderable._render()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"state-reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"gymdomainhashable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gymdomainhashable"}},[t._v("#")]),t._v(" GymDomainHashable")]),t._v(" "),a("p",[t._v("This class wraps an OpenAI Gym environment (gym.env) as a scikit-decide domain\nusing hashable states and actions.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"GymDomainHashable",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"GymDomainHashable",sig:{params:[{name:"gym_env",annotation:"gym.Env"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("gym_env")]),t._v(": The Gym environment (gym.env) to wrap.")])]),t._v(" "),a("h3",{attrs:{id:"check-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-3"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-4"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-3"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-3"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-3"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-3"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-4"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-3"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-3"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-3"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-52"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-3"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-53"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-3"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable.render()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Renderable._render()")]),t._v(". The\nboilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-54"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-3"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-55"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"solve-with-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-2"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-56"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-57"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"unwrapped-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-2"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"GymDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the Gym environment (gym.env) and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-58"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original Gym environment.")]),t._v(" "),a("h3",{attrs:{id:"check-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-4"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-59"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-5"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-60"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-6"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-61"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-4"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-62"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-2"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-63"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-4"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-64"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-2"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-65"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-3"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-66"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-4"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-67"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-4"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-68"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-4"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-69"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-5"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-70"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-6"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-71"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-2"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-72"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-4"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-53"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-73"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-4"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-54"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-74"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-2"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-55"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-75"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-4"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-56"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-76"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-2"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-57"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-77"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-4"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-58"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-78"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-4"}},[t._v("#")]),t._v(" _render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable._render()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Renderable._render_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-59"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-79"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"render-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-from-2"}},[t._v("#")]),t._v(" _render_from "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Renderable._render()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-60"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-80"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-4"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-81"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"state-reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-2"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-82"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-2"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-61"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-83"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-62"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-84"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"deterministicinitializedgymdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicinitializedgymdomain"}},[t._v("#")]),t._v(" DeterministicInitializedGymDomain")]),t._v(" "),a("p",[t._v("This class wraps an OpenAI Gym environment (gym.env) as a scikit-decide domain\nwith a deterministic initial state (i.e. reset the domain to the initial\nstate returned by the first reset)")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"DeterministicInitializedGymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"DeterministicInitializedGymDomain",sig:{params:[{name:"gym_env",annotation:"gym.Env"},{name:"set_state",default:"None",annotation:"Callable[[gym.Env, D.T_memory[D.T_state]], None]"},{name:"get_state",default:"None",annotation:"Callable[[gym.Env], D.T_memory[D.T_state]]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-63"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("gym_env")]),t._v(": The Gym environment (gym.env) to wrap.")]),t._v(" "),a("li",[a("strong",[t._v("set_state")]),t._v(": Function to call to set the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")]),t._v(" "),a("li",[a("strong",[t._v("get_state")]),t._v(": Function to call to get the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")])]),t._v(" "),a("h3",{attrs:{id:"check-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-5"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-64"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-85"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-7"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-86"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-5"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-65"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-87"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-5"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-66"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-88"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-89"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-90"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-5"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-67"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-91"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-5"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-68"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-92"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-7"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-93"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-5"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-69"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-94"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-5"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-70"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-95"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-5"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-71"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-96"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-5"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-72"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-97"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-5"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable.render()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Renderable._render()")]),t._v(". The\nboilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-73"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-98"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-5"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-99"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"solve-with-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-3"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-74"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-100"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-75"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-101"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"unwrapped-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-3"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"DeterministicInitializedGymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the Gym environment (gym.env) and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-102"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original Gym environment.")]),t._v(" "),a("h3",{attrs:{id:"check-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-6"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-76"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-103"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-8"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-104"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-9"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-105"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-6"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-77"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-106"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-3"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-78"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-107"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-6"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-79"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-108"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-3"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-80"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-109"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-2"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-110"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-3"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-111"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-2"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-112"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-3"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-113"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-5"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-114"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-6"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-115"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-6"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-81"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-116"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-6"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-82"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-117"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-8"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-118"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-9"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-119"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-3"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-83"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-120"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-6"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-84"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-121"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-6"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-85"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-122"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-3"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-86"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-123"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-6"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-87"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-124"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-3"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-88"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-125"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-6"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-89"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-126"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-6"}},[t._v("#")]),t._v(" _render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable._render()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Renderable._render_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-90"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-127"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"render-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-from-3"}},[t._v("#")]),t._v(" _render_from "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Renderable._render()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-91"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-128"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-6"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-129"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"state-reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-3"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-130"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-3"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-92"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-131"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-6"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-93"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-132"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"gymwidthdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gymwidthdomain"}},[t._v("#")]),t._v(" GymWidthDomain")]),t._v(" "),a("p",[t._v("This class wraps an OpenAI Gym environment as a domain\nusable by width-based solving algorithm (e.g. IW)")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-4"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"GymWidthDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"GymWidthDomain",sig:{params:[{name:"continuous_feature_fidelity",default:"1",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymWidthDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-94"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("continuous_feature_fidelity")]),t._v(": Number of integers to represent a continuous feature\nin the interval-based feature abstraction (higher is more precise)")])]),t._v(" "),a("h3",{attrs:{id:"bee1-features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bee1-features"}},[t._v("#")]),t._v(" bee1_features "),a("Badge",{attrs:{text:"GymWidthDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"bee1_features",sig:{params:[{name:"self"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Return a numpy vector of ints representing the current 'cumulated layer' of each state variable")]),t._v(" "),a("h3",{attrs:{id:"bee2-features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bee2-features"}},[t._v("#")]),t._v(" bee2_features "),a("Badge",{attrs:{text:"GymWidthDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"bee2_features",sig:{params:[{name:"self"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Return a numpy vector of ints representing the current 'cumulated layer' of each state variable")]),t._v(" "),a("h3",{attrs:{id:"binary-features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#binary-features"}},[t._v("#")]),t._v(" binary_features "),a("Badge",{attrs:{text:"GymWidthDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"binary_features",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}]}}}),t._v(" "),a("p",[t._v("Transform state in a bit vector and call f on each true value of this vector")]),t._v(" "),a("h4",{attrs:{id:"parameters-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-95"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("p",[a("strong",[t._v("memory")]),t._v(": The Gym state (in observation_space) to binarize")])]),t._v(" "),a("li",[a("p",[a("strong",[t._v("Return")]),t._v(" a list of booleans representing the binary representation of each state variable")])])]),t._v(" "),a("h3",{attrs:{id:"nb-of-binary-features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nb-of-binary-features"}},[t._v("#")]),t._v(" nb_of_binary_features "),a("Badge",{attrs:{text:"GymWidthDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"nb_of_binary_features",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the size of the bit vector encoding an observation")]),t._v(" "),a("h2",{attrs:{id:"gymdiscreteactiondomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gymdiscreteactiondomain"}},[t._v("#")]),t._v(" GymDiscreteActionDomain")]),t._v(" "),a("p",[t._v("This class wraps an OpenAI Gym environment as a domain\nusable by a solver that requires enumerable applicable action sets")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-5"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"GymDiscreteActionDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"GymDiscreteActionDomain",sig:{params:[{name:"discretization_factor",default:"10",annotation:"int"},{name:"branching_factor",default:"None",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymDiscreteActionDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-96"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("discretization_factor")]),t._v(": Number of discretized action variable values per continuous action variable")]),t._v(" "),a("li",[a("strong",[t._v("branching_factor")]),t._v(": if not None, sample branching_factor actions from the resulting list of discretized actions")])]),t._v(" "),a("h3",{attrs:{id:"get-action-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-10"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-133"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-7"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-97"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-134"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-7"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-98"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-135"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"is-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-7"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-99"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-136"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-7"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-100"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-137"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-7"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-101"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-138"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-11"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-139"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-12"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-140"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-8"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-102"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-141"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-4"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-103"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-142"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-8"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-104"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-143"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-4"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-105"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-144"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"is-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-8"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-106"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-145"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-8"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-107"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-146"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-4"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-108"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-147"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-8"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-109"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-148"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-4"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-110"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-149"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h2",{attrs:{id:"deterministicgymdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicgymdomain"}},[t._v("#")]),t._v(" DeterministicGymDomain")]),t._v(" "),a("p",[t._v("This class wraps a deterministic OpenAI Gym environment (gym.env) as a scikit-decide domain.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-6"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"DeterministicGymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"DeterministicGymDomain",sig:{params:[{name:"gym_env",annotation:"gym.Env"},{name:"set_state",default:"None",annotation:"Callable[[gym.Env, D.T_memory[D.T_state]], None]"},{name:"get_state",default:"None",annotation:"Callable[[gym.Env], D.T_memory[D.T_state]]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize DeterministicGymDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-111"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("gym_env")]),t._v(": The deterministic Gym environment (gym.env) to wrap.")]),t._v(" "),a("li",[a("strong",[t._v("set_state")]),t._v(": Function to call to set the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")]),t._v(" "),a("li",[a("strong",[t._v("get_state")]),t._v(": Function to call to get the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")])]),t._v(" "),a("h3",{attrs:{id:"check-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-7"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-112"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-150"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-13"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-151"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-9"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-113"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-152"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-9"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-114"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-153"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-4"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-154"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-4"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-155"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-115"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-156"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-116"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-157"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-7"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-117"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-158"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-7"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-118"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-159"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-10"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-160"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-119"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-161"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-9"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-120"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-162"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-9"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-121"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-163"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-9"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-122"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-164"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-7"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-123"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-165"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-124"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-166"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-167"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-7"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable.render()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Renderable._render()")]),t._v(". The\nboilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-125"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-168"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-7"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-169"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-126"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-170"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-127"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-4"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-128"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-171"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-7"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-129"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-172"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"unwrapped-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-4"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"DeterministicGymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the deterministic Gym environment (gym.env) and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-173"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original Gym environment.")]),t._v(" "),a("h3",{attrs:{id:"check-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-8"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-130"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-174"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-14"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-175"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-15"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-176"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-10"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-131"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-177"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-5"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-132"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-178"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-10"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-133"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-179"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-5"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-134"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-180"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-5"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-181"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-6"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-182"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-5"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-183"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-6"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-184"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-7"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-185"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-8"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-186"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-2"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-135"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-187"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-2"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"SingleValueDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-136"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-188"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-8"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-137"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-189"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-8"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-138"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-190"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-11"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-191"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-12"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-192"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-2"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-139"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-193"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-4"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-140"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-194"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-10"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-141"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-195"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-10"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-142"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-196"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-5"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-143"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-197"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-10"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-144"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-198"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-5"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-145"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-199"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-8"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-146"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-200"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-2"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-147"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-201"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-2"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-202"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-3"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-203"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-8"}},[t._v("#")]),t._v(" _render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable._render()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Renderable._render_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-148"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-204"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"render-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-from-4"}},[t._v("#")]),t._v(" _render_from "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Renderable._render()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-149"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-205"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-205"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-8"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-206"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-206"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-150"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-207"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-207"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-2"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-151"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-4"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-208"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-208"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-152"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-209"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-209"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-4"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-153"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-210"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-210"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-8"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-154"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-211"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-211"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"gymplanningdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gymplanningdomain"}},[t._v("#")]),t._v(" GymPlanningDomain")]),t._v(" "),a("p",[t._v("This class wraps a cost-based deterministic OpenAI Gym environment as a domain\nusable by a classical planner")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-7"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"GymPlanningDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"GymPlanningDomain",sig:{params:[{name:"gym_env",annotation:"gym.Env"},{name:"set_state",default:"None",annotation:"Callable[[gym.Env, D.T_memory[D.T_state]], None]"},{name:"get_state",default:"None",annotation:"Callable[[gym.Env], D.T_memory[D.T_state]]"},{name:"termination_is_goal",default:"False",annotation:"bool"},{name:"max_depth",default:"50",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymPlanningDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-155"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("gym_env")]),t._v(": The deterministic Gym environment (gym.env) to wrap.")]),t._v(" "),a("li",[a("strong",[t._v("set_state")]),t._v(": Function to call to set the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")]),t._v(" "),a("li",[a("strong",[t._v("get_state")]),t._v(": Function to call to get the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")]),t._v(" "),a("li",[a("strong",[t._v("termination_is_goal")]),t._v(": True if the termination condition is a goal (and not a dead-end)")]),t._v(" "),a("li",[a("strong",[t._v("max_depth")]),t._v(": maximum depth of states to explore from the initial state")])]),t._v(" "),a("h3",{attrs:{id:"check-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-9"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-156"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-212"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-212"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-16"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-213"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-213"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-11"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-157"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-214"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-214"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-11"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-158"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-215"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-215"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-216"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-216"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-7"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-217"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-217"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-7"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-218"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-218"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-3"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-159"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-219"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-219"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-3"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-160"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-220"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-220"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-9"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-161"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-221"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-221"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-9"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-162"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-222"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-222"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-13"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-223"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-223"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-3"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-163"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-224"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-224"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-11"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-164"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-225"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-225"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-11"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-165"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-226"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-226"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-11"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-166"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-227"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-227"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-167"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-228"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-228"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-9"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-168"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-229"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-229"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-3"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-169"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-230"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-230"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-4"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-231"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-231"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-9"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable.render()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Renderable._render()")]),t._v(". The\nboilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-170"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-232"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-232"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-9"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-233"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-233"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-171"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-234"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-234"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-3"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-172"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-5"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-173"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-235"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-235"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-9"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-174"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-236"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-236"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"unwrapped-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-5"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"DeterministicGymDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the deterministic Gym environment (gym.env) and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-237"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-237"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original Gym environment.")]),t._v(" "),a("h3",{attrs:{id:"check-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-10"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its cost specification (must be positive).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function calls "),a("code",[t._v("PositiveCost._is_positive()")]),t._v(" to determine if a value is positive (can be overridden for\nadvanced value types).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-175"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-238"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-238"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-17"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-239"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-239"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-18"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-240"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-240"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-12"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-176"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-241"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-241"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-6"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-177"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-242"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-242"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-12"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-178"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-243"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-243"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-6"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-179"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-244"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-244"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-2"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-245"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-245"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-3"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-246"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-246"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-8"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-247"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-247"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-9"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-248"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-248"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-8"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-249"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-249"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-9"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-250"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-250"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-9"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-251"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-251"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-10"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-252"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-252"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-4"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-180"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-253"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-253"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-4"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"SingleValueDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-181"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-254"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-254"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-10"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-182"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-255"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-255"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-10"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-183"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-256"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-14"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-257"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-257"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-15"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-258"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-258"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-4"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-184"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-259"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-259"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-5"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-185"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-260"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-260"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-12"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-186"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-261"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-261"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-12"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-187"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-262"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-262"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-6"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-188"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-263"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-263"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-12"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-189"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-264"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-264"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-6"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-190"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-265"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-265"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-2"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-191"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-266"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-266"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-10"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-192"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-267"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-267"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-positive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-positive"}},[t._v("#")]),t._v(" _is_positive "),a("Badge",{attrs:{text:"PositiveCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_positive",sig:{params:[{name:"self"},{name:"cost",annotation:"D.T_value"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Determine if a value is positive (can be overridden for advanced value types).")]),t._v(" "),a("h4",{attrs:{id:"parameters-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-193"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("cost")]),t._v(": The cost to evaluate.")])]),t._v(" "),a("h4",{attrs:{id:"returns-268"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-268"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the cost is positive (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-4"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-194"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-269"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-269"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-5"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-270"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-270"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-6"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-271"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-271"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-10"}},[t._v("#")]),t._v(" _render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable._render()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Renderable._render_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-195"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-272"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-272"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"render-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-from-5"}},[t._v("#")]),t._v(" _render_from "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Renderable._render()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-196"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-273"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-273"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-10"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-274"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-274"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-197"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-275"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-275"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-4"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-198"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-5"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-276"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-276"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-2"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-199"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-277"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-277"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-5"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-200"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-278"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-278"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-10"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-201"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-279"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-279"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"asgymenv"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asgymenv"}},[t._v("#")]),t._v(" AsGymEnv")]),t._v(" "),a("p",[t._v("This class wraps a scikit-decide domain as an OpenAI Gym environment.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("The scikit-decide domain to wrap should inherit "),a("code",[t._v("UnrestrictedActionDomain")]),t._v(" since OpenAI Gym environments usually assume\nthat all their actions are always applicable.")])]),t._v(" "),a("p",[t._v("An OpenAI Gym environment encapsulates an environment with arbitrary behind-the-scenes dynamics. An environment can\nbe partially or fully observed.")]),t._v(" "),a("p",[t._v("The main API methods that users of this class need to know are:")]),t._v(" "),a("ul",[a("li",[t._v("step")]),t._v(" "),a("li",[t._v("reset")]),t._v(" "),a("li",[t._v("render")]),t._v(" "),a("li",[t._v("close")]),t._v(" "),a("li",[t._v("seed")])]),t._v(" "),a("p",[t._v("And set the following attributes:")]),t._v(" "),a("ul",[a("li",[t._v("action_space: The Space object corresponding to valid actions.")]),t._v(" "),a("li",[t._v("observation_space: The Space object corresponding to valid observations.")]),t._v(" "),a("li",[t._v("reward_range: A tuple corresponding to the min and max possible rewards.")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v('A default reward range set to [-inf,+inf] already exists. Set it if you want a narrower range. The methods are\naccessed publicly as "step", "reset", etc.. The non-underscored versions are wrapper methods to which\nfunctionality may be added over time.')])]),t._v(" "),a("h3",{attrs:{id:"constructor-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-8"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"AsGymEnv",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"AsGymEnv",sig:{params:[{name:"domain",annotation:"Domain"},{name:"unwrap_spaces",default:"True",annotation:"bool"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize AsGymEnv.")]),t._v(" "),a("h4",{attrs:{id:"parameters-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-202"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("domain")]),t._v(": The scikit-decide domain to wrap as an OpenAI Gym environment.")]),t._v(" "),a("li",[a("strong",[t._v("unwrap_spaces")]),t._v(": Boolean specifying whether the action & observation spaces should be unwrapped.")])]),t._v(" "),a("h3",{attrs:{id:"close"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#close"}},[t._v("#")]),t._v(" close "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"close",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Override close in your subclass to perform any necessary cleanup.")]),t._v(" "),a("p",[t._v("Environments will automatically close() themselves when garbage collected or when the program exits.")]),t._v(" "),a("h3",{attrs:{id:"render-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-11"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"mode",default:"human"}]}}}),t._v(" "),a("p",[t._v("Render the environment.")]),t._v(" "),a("p",[t._v("The set of supported modes varies per environment. (And some environments do not support rendering at all.) By\nconvention, if mode is:")]),t._v(" "),a("ul",[a("li",[t._v("human: Render to the current display or terminal and return nothing. Usually for human consumption.")]),t._v(" "),a("li",[t._v("rgb_array: Return an numpy.ndarray with shape (x, y, 3), representing RGB values for an x-by-y pixel image,\nsuitable for turning into a video.")]),t._v(" "),a("li",[t._v("ansi: Return a string (str) or StringIO.StringIO containing a terminal-style text representation. The text can\ninclude newlines and ANSI escape sequences (e.g. for colors).")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Make sure that your class's metadata 'render.modes' key includes he list of supported modes. It's\nrecommended to call super() in implementations to use the functionality of this method.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-203"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("mode")]),t._v(" (str): The mode to render with.")]),t._v(" "),a("li",[a("strong",[t._v("close")]),t._v(" (bool): Close all open renderings.")])]),t._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyEnv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Env"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n metadata "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'render.modes'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'human'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'rgb_array'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("def")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("render")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("self"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" mode"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'human'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" mode "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'rgb_array'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" np"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("array"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# return RGB frame suitable for video")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("elif")]),t._v(" mode "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("is")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'human'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# pop up a window and render")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("super")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyEnv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" self"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("render"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mode"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("mode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# just raise an exception")]),t._v("\n")])])]),a("h3",{attrs:{id:"reset-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-11"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and returns an initial observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-280"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-280"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("observation (object): The initial observation of the space.")]),t._v(" "),a("h3",{attrs:{id:"seed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#seed"}},[t._v("#")]),t._v(" seed "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"seed",sig:{params:[{name:"self"},{name:"seed",default:"None"}]}}}),t._v(" "),a("p",[t._v("Sets the seed for this env's random number generator(s).")]),t._v(" "),a("p",[t._v("Note:\nSome environments use multiple pseudorandom number generators.\nWe want to capture all such seeds used in order to ensure that\nthere aren't accidental correlations between multiple generators.")]),t._v(" "),a("p",[t._v("Returns:\nlist: Returns the list of seeds used in this env's random\nnumber generators. The first value in the list should be the\n\"main\" seed, or the value which a reproducer should pass to\n'seed'. Often, the main seed equals the provided 'seed', but\nthis won't be true if seed=None, for example.")]),t._v(" "),a("h3",{attrs:{id:"step-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-11"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action"}]}}}),t._v(" "),a("p",[t._v("Run one timestep of the environment's dynamics. When end of episode is reached, you are responsible for\ncalling "),a("code",[t._v("reset()")]),t._v(" to reset this environment's state.")]),t._v(" "),a("p",[t._v("Accepts an action and returns a tuple (observation, reward, done, info).")]),t._v(" "),a("h4",{attrs:{id:"parameters-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-204"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(" (object): An action provided by the environment.")])]),t._v(" "),a("h4",{attrs:{id:"returns-281"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-281"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A tuple with following elements:")]),t._v(" "),a("ul",[a("li",[t._v("observation (object): The agent's observation of the current environment.")]),t._v(" "),a("li",[t._v("reward (float) : The amount of reward returned after previous action.")]),t._v(" "),a("li",[t._v("done (boolean): Whether the episode ended, in which case further step() calls will return undefined results.")]),t._v(" "),a("li",[t._v("info (dict): Contains auxiliary diagnostic information (helpful for debugging, and sometimes learning).")])]),t._v(" "),a("h3",{attrs:{id:"unwrapped-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-6"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the scikit-decide domain and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-282"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-282"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original scikit-decide domain.")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{575:function(t,e,a){"use strict";a.r(e);var s=a(38),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"hub-domain-gym-gym"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-gym-gym"}},[t._v("#")]),t._v(" hub.domain.gym.gym")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"gymdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gymdomain"}},[t._v("#")]),t._v(" GymDomain")]),t._v(" "),a("p",[t._v("This class wraps an OpenAI Gym environment (gym.env) as a scikit-decide domain.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"GymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"GymDomain",sig:{params:[{name:"gym_env",annotation:"gym.Env"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("gym_env")]),t._v(": The Gym environment (gym.env) to wrap.")])]),t._v(" "),a("h3",{attrs:{id:"check-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-2"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-2"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-3"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-3"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-4"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-4"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-5"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-5"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-6"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-6"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-7"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-7"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-8"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-8"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-9"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-9"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-10"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-10"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-11"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable.render()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Renderable._render()")]),t._v(". The\nboilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-11"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-12"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-13"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"solve-with"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-12"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-14"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-13"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-15"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"unwrapped"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"GymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the Gym environment (gym.env) and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-16"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original Gym environment.")]),t._v(" "),a("h3",{attrs:{id:"check-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-2"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-14"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-17"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-2"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-18"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-3"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-19"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-2"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-15"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-20"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-16"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-21"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-2"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-17"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-22"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-18"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-23"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-24"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-2"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-25"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-2"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-19"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-19"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-26"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-2"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-20"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-20"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-27"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-2"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-28"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-3"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-29"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-21"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-21"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-30"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-2"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-22"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-22"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-31"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-2"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-23"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-23"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-32"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-24"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-24"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-33"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-2"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-25"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-25"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-34"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-26"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-26"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-35"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-2"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-27"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-27"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-36"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-2"}},[t._v("#")]),t._v(" _render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable._render()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Renderable._render_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-28"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-28"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-37"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"render-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-from"}},[t._v("#")]),t._v(" _render_from "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Renderable._render()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-29"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-29"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-38"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-2"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-39"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"state-reset"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-40"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-step"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-30"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-30"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-41"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-31"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-31"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-42"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"gymdomainhashable"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gymdomainhashable"}},[t._v("#")]),t._v(" GymDomainHashable")]),t._v(" "),a("p",[t._v("This class wraps an OpenAI Gym environment (gym.env) as a scikit-decide domain\nusing hashable states and actions.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-2"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"GymDomainHashable",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"GymDomainHashable",sig:{params:[{name:"gym_env",annotation:"gym.Env"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-32"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-32"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("gym_env")]),t._v(": The Gym environment (gym.env) to wrap.")])]),t._v(" "),a("h3",{attrs:{id:"check-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-3"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-33"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-33"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-43"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-4"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-44"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-3"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-34"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-34"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-45"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-3"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-35"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-35"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-46"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-3"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-36"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-36"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-47"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-3"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-37"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-37"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-48"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-4"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-49"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-3"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-38"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-50"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-3"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-39"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-39"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-51"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-3"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-40"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-40"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-52"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-3"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-41"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-41"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-53"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-3"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable.render()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Renderable._render()")]),t._v(". The\nboilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-42"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-42"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-54"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-3"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-55"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"solve-with-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-2"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-43"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-43"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-56"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-44"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-44"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-57"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"unwrapped-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-2"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"GymDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the Gym environment (gym.env) and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-58"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original Gym environment.")]),t._v(" "),a("h3",{attrs:{id:"check-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-4"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-45"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-45"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-59"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-5"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-60"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-6"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-61"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-4"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-46"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-46"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-62"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-2"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-47"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-47"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-63"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-4"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-48"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-48"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-64"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-2"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-49"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-49"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-65"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-3"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-66"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-4"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-67"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-4"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-50"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-50"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-68"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-4"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-51"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-51"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-69"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-5"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-70"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-6"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-71"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-2"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-52"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-52"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-72"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-4"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-53"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-53"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-73"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-4"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-54"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-54"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-74"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-2"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-55"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-55"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-75"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-4"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-56"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-56"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-76"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-2"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-57"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-57"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-77"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-4"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-58"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-58"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-78"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-4"}},[t._v("#")]),t._v(" _render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable._render()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Renderable._render_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-59"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-59"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-79"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"render-from-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-from-2"}},[t._v("#")]),t._v(" _render_from "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Renderable._render()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-60"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-60"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-80"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-4"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-81"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"state-reset-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-2"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-82"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-step-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-2"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-61"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-61"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-83"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-62"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-62"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-84"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"deterministicinitializedgymdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicinitializedgymdomain"}},[t._v("#")]),t._v(" DeterministicInitializedGymDomain")]),t._v(" "),a("p",[t._v("This class wraps an OpenAI Gym environment (gym.env) as a scikit-decide domain\nwith a deterministic initial state (i.e. reset the domain to the initial\nstate returned by the first reset)")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-3"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"DeterministicInitializedGymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"DeterministicInitializedGymDomain",sig:{params:[{name:"gym_env",annotation:"gym.Env"},{name:"set_state",default:"None",annotation:"Callable[[gym.Env, D.T_memory[D.T_state]], None]"},{name:"get_state",default:"None",annotation:"Callable[[gym.Env], D.T_memory[D.T_state]]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-63"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-63"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("gym_env")]),t._v(": The Gym environment (gym.env) to wrap.")]),t._v(" "),a("li",[a("strong",[t._v("set_state")]),t._v(": Function to call to set the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")]),t._v(" "),a("li",[a("strong",[t._v("get_state")]),t._v(": Function to call to get the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")])]),t._v(" "),a("h3",{attrs:{id:"check-value-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-5"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-64"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-64"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-85"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-7"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-86"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-5"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-65"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-65"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-87"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-5"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-66"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-66"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-88"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-89"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-90"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-5"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-67"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-67"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-91"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-5"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-68"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-68"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-92"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-7"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-93"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"is-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-5"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-69"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-69"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-94"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-5"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-70"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-70"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-95"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-5"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-71"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-71"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-96"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-5"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-72"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-72"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-97"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-5"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable.render()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Renderable._render()")]),t._v(". The\nboilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-73"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-73"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-98"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-5"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-99"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"solve-with-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-3"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-74"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-74"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-100"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-75"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-75"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-101"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"unwrapped-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-3"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"DeterministicInitializedGymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the Gym environment (gym.env) and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-102"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original Gym environment.")]),t._v(" "),a("h3",{attrs:{id:"check-value-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-6"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-76"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-76"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-103"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-8"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-104"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-9"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-105"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-6"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-77"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-77"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-106"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-3"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-78"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-78"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-107"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-6"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-79"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-79"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-108"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-3"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-80"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-80"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-109"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-2"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-110"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-3"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-111"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-2"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-112"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-3"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-113"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-5"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-114"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-6"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-115"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-6"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-81"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-81"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-116"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-6"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-82"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-82"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-117"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-8"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-118"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-9"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-119"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"init-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-3"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-83"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-83"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-120"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-6"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-84"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-84"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-121"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-6"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-85"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-85"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-122"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-3"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-86"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-86"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-123"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-6"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-87"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-87"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-124"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-3"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-88"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-88"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-125"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-6"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-89"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-89"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-126"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-6"}},[t._v("#")]),t._v(" _render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable._render()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Renderable._render_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-90"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-90"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-127"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"render-from-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-from-3"}},[t._v("#")]),t._v(" _render_from "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Renderable._render()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-91"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-91"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-128"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-6"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-129"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"state-reset-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-3"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-130"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-step-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-3"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-92"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-92"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-131"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-6"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-93"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-93"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-132"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"gymwidthdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gymwidthdomain"}},[t._v("#")]),t._v(" GymWidthDomain")]),t._v(" "),a("p",[t._v("This class wraps an OpenAI Gym environment as a domain\nusable by width-based solving algorithm (e.g. IW)")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-4"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"GymWidthDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"GymWidthDomain",sig:{params:[{name:"continuous_feature_fidelity",default:"1",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymWidthDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-94"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-94"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("continuous_feature_fidelity")]),t._v(": Number of integers to represent a continuous feature\nin the interval-based feature abstraction (higher is more precise)")])]),t._v(" "),a("h3",{attrs:{id:"bee1-features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bee1-features"}},[t._v("#")]),t._v(" bee1_features "),a("Badge",{attrs:{text:"GymWidthDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"bee1_features",sig:{params:[{name:"self"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Return a numpy vector of ints representing the current 'cumulated layer' of each state variable")]),t._v(" "),a("h3",{attrs:{id:"bee2-features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#bee2-features"}},[t._v("#")]),t._v(" bee2_features "),a("Badge",{attrs:{text:"GymWidthDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"bee2_features",sig:{params:[{name:"self"},{name:"state"}]}}}),t._v(" "),a("p",[t._v("Return a numpy vector of ints representing the current 'cumulated layer' of each state variable")]),t._v(" "),a("h3",{attrs:{id:"binary-features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#binary-features"}},[t._v("#")]),t._v(" binary_features "),a("Badge",{attrs:{text:"GymWidthDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"binary_features",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}]}}}),t._v(" "),a("p",[t._v("Transform state in a bit vector and call f on each true value of this vector")]),t._v(" "),a("h4",{attrs:{id:"parameters-95"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-95"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("p",[a("strong",[t._v("memory")]),t._v(": The Gym state (in observation_space) to binarize")])]),t._v(" "),a("li",[a("p",[a("strong",[t._v("Return")]),t._v(" a list of booleans representing the binary representation of each state variable")])])]),t._v(" "),a("h3",{attrs:{id:"nb-of-binary-features"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nb-of-binary-features"}},[t._v("#")]),t._v(" nb_of_binary_features "),a("Badge",{attrs:{text:"GymWidthDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"nb_of_binary_features",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Return the size of the bit vector encoding an observation")]),t._v(" "),a("h2",{attrs:{id:"gymdiscreteactiondomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gymdiscreteactiondomain"}},[t._v("#")]),t._v(" GymDiscreteActionDomain")]),t._v(" "),a("p",[t._v("This class wraps an OpenAI Gym environment as a domain\nusable by a solver that requires enumerable applicable action sets")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-5"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"GymDiscreteActionDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"GymDiscreteActionDomain",sig:{params:[{name:"discretization_factor",default:"10",annotation:"int"},{name:"branching_factor",default:"None",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymDiscreteActionDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-96"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-96"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("discretization_factor")]),t._v(": Number of discretized action variable values per continuous action variable")]),t._v(" "),a("li",[a("strong",[t._v("branching_factor")]),t._v(": if not None, sample branching_factor actions from the resulting list of discretized actions")])]),t._v(" "),a("h3",{attrs:{id:"get-action-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-10"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-133"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-7"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-97"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-97"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-134"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-7"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-98"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-98"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-135"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"is-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-7"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-99"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-99"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-136"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-7"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-100"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-100"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-137"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-7"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-101"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-101"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-138"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-11"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-139"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-12"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-140"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-8"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-102"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-102"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-141"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-4"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-103"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-103"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-142"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-8"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-104"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-104"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-143"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-4"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-105"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-105"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-144"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"is-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-8"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-106"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-106"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-145"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-8"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-107"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-107"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-146"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-4"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-108"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-108"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-147"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-8"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-109"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-109"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-148"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-4"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-110"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-110"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-149"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h2",{attrs:{id:"deterministicgymdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#deterministicgymdomain"}},[t._v("#")]),t._v(" DeterministicGymDomain")]),t._v(" "),a("p",[t._v("This class wraps a deterministic OpenAI Gym environment (gym.env) as a scikit-decide domain.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-6"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"DeterministicGymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"DeterministicGymDomain",sig:{params:[{name:"gym_env",annotation:"gym.Env"},{name:"set_state",default:"None",annotation:"Callable[[gym.Env, D.T_memory[D.T_state]], None]"},{name:"get_state",default:"None",annotation:"Callable[[gym.Env], D.T_memory[D.T_state]]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize DeterministicGymDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-111"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-111"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("gym_env")]),t._v(": The deterministic Gym environment (gym.env) to wrap.")]),t._v(" "),a("li",[a("strong",[t._v("set_state")]),t._v(": Function to call to set the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")]),t._v(" "),a("li",[a("strong",[t._v("get_state")]),t._v(": Function to call to get the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")])]),t._v(" "),a("h3",{attrs:{id:"check-value-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-7"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-112"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-112"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-150"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-13"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-151"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-9"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-113"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-113"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-152"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-9"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-114"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-114"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-153"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-4"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-154"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-4"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-155"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-115"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-115"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-156"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-116"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-116"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-157"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-7"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-117"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-117"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-158"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-7"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-118"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-118"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-159"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-10"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-160"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-119"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-119"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-161"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-9"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-120"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-120"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-162"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-9"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-121"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-121"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-163"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-9"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-122"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-122"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-164"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-7"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-123"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-123"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-165"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-124"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-124"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-166"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-167"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-7"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable.render()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Renderable._render()")]),t._v(". The\nboilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-125"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-125"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-168"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-7"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-169"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-126"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-126"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-170"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-127"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-127"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-4"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-128"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-128"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-171"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-7"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-129"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-129"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-172"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"unwrapped-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-4"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"DeterministicGymDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the deterministic Gym environment (gym.env) and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-173"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original Gym environment.")]),t._v(" "),a("h3",{attrs:{id:"check-value-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-8"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-130"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-130"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-174"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-14"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-175"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-15"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-176"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-10"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-131"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-131"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-177"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-5"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-132"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-132"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-178"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-10"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-133"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-133"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-179"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-5"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-134"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-134"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-180"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-5"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-181"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-6"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-182"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-5"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-183"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-6"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-184"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-7"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-185"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-8"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-186"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-2"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-135"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-135"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-187"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-2"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"SingleValueDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-136"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-136"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-188"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-8"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-137"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-137"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-189"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-8"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-138"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-138"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-190"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-11"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-191"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-12"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-192"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-2"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-139"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-139"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-193"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-4"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-140"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-140"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-194"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-10"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-141"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-141"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-195"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-10"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-142"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-142"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-196"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-5"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-143"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-143"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-197"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-10"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-144"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-144"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-198"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-5"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-145"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-145"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-199"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-8"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-146"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-146"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-200"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-2"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-147"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-147"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-201"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-2"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-202"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-3"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-203"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-8"}},[t._v("#")]),t._v(" _render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable._render()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Renderable._render_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-148"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-148"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-204"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"render-from-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-from-4"}},[t._v("#")]),t._v(" _render_from "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Renderable._render()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-149"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-149"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-205"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-205"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-8"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-206"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-206"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-2"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-150"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-150"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-207"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-207"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-2"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-151"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-151"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-2"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-4"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-208"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-208"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-152"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-152"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-209"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-209"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-4"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-153"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-153"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-210"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-210"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-8"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-154"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-154"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-211"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-211"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"gymplanningdomain"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#gymplanningdomain"}},[t._v("#")]),t._v(" GymPlanningDomain")]),t._v(" "),a("p",[t._v("This class wraps a cost-based deterministic OpenAI Gym environment as a domain\nusable by a classical planner")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Using this class requires OpenAI Gym to be installed.")])]),t._v(" "),a("h3",{attrs:{id:"constructor-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-7"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"GymPlanningDomain",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"GymPlanningDomain",sig:{params:[{name:"gym_env",annotation:"gym.Env"},{name:"set_state",default:"None",annotation:"Callable[[gym.Env, D.T_memory[D.T_state]], None]"},{name:"get_state",default:"None",annotation:"Callable[[gym.Env], D.T_memory[D.T_state]]"},{name:"termination_is_goal",default:"False",annotation:"bool"},{name:"max_depth",default:"50",annotation:"int"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize GymPlanningDomain.")]),t._v(" "),a("h4",{attrs:{id:"parameters-155"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-155"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("gym_env")]),t._v(": The deterministic Gym environment (gym.env) to wrap.")]),t._v(" "),a("li",[a("strong",[t._v("set_state")]),t._v(": Function to call to set the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")]),t._v(" "),a("li",[a("strong",[t._v("get_state")]),t._v(": Function to call to get the state of the gym environment.\nIf None, default behavior is to deepcopy the environment when changing state")]),t._v(" "),a("li",[a("strong",[t._v("termination_is_goal")]),t._v(": True if the termination condition is a goal (and not a dead-end)")]),t._v(" "),a("li",[a("strong",[t._v("max_depth")]),t._v(": maximum depth of states to explore from the initial state")])]),t._v(" "),a("h3",{attrs:{id:"check-value-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-9"}},[t._v("#")]),t._v(" check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its reward specification.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function returns always True by default because any kind of reward should be accepted at this level.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-156"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-156"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-212"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-212"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-16"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-16"}},[t._v("#")]),t._v(" get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-213"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-213"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-11"}},[t._v("#")]),t._v(" get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-157"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-157"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-214"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-214"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-11"}},[t._v("#")]),t._v(" get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-158"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-158"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-215"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-215"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals"}},[t._v("#")]),t._v(" get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals.get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches its\nvalue to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-216"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-216"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-7"}},[t._v("#")]),t._v(" get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized.get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-217"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-217"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-7"}},[t._v("#")]),t._v(" get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized.get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-218"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-218"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-3"}},[t._v("#")]),t._v(" get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-159"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-159"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-219"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-219"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-3"}},[t._v("#")]),t._v(" get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"DiscreteDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-160"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-160"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-220"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-220"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-9"}},[t._v("#")]),t._v(" get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-161"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-161"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-221"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-221"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-9"}},[t._v("#")]),t._v(" get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-162"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-162"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-222"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-222"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-13"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-13"}},[t._v("#")]),t._v(" get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-223"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-223"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-3"}},[t._v("#")]),t._v(" get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-163"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-163"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-224"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-224"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"is-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-11"}},[t._v("#")]),t._v(" is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events.get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-164"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-164"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-225"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-225"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-11"}},[t._v("#")]),t._v(" is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-165"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-165"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-226"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-226"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-11"}},[t._v("#")]),t._v(" is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events.is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-166"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-166"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-227"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-227"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal"}},[t._v("#")]),t._v(" is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals.get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-167"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-167"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-228"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-228"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-9"}},[t._v("#")]),t._v(" is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable.get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-168"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-168"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-229"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-229"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-3"}},[t._v("#")]),t._v(" is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-169"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-169"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-230"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-230"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-4"}},[t._v("#")]),t._v(" is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions.is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-231"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-231"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-9"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable.render()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Renderable._render()")]),t._v(". The\nboilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of the memory parameter whenever the latter\nis None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-170"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-170"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-232"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-232"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-9"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable.reset()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Initializable._reset()")]),t._v("\n(which returns an initial state). The boilerplate code automatically stores the initial state into the "),a("code",[t._v("_memory")]),t._v("\nattribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-233"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-233"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-3"}},[t._v("#")]),t._v(" sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation.sample()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Simulation._sample()")]),t._v("\n(which returns a transition outcome). The boilerplate code automatically samples an observation corresponding to\nthe sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation.sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-171"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-171"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-234"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-234"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-3"}},[t._v("#")]),t._v(" set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with successive '),a("code",[t._v("Environment.step()")]),t._v("\ncalls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-172"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-172"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-3"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"solve-with-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#solve-with-5"}},[t._v("#")]),t._v(" solve_with "),a("Badge",{attrs:{text:"Domain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"solve_with",sig:{params:[{name:"solver",annotation:"Solver"},{name:"domain_factory",default:"None",annotation:"Optional[Callable[[], Domain]]"},{name:"load_path",default:"None",annotation:"Optional[str]"}],return:"Solver"}}}),t._v(" "),a("p",[t._v("Solve the domain with a new or loaded solver and return it auto-cast to the level of the domain.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Solver.check_domain()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Solver._check_domain_additional()")]),t._v(' (which returns True by default but can be overridden to define\nspecific checks in addition to the "domain requirements"). The boilerplate code automatically checks whether all\ndomain requirements are met.')]),t._v(" "),a("h4",{attrs:{id:"parameters-173"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-173"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("solver")]),t._v(": The solver.")]),t._v(" "),a("li",[a("strong",[t._v("domain_factory")]),t._v(": A callable with no argument returning the domain to solve (factory is the domain class if None).")]),t._v(" "),a("li",[a("strong",[t._v("load_path")]),t._v(": The path to restore the solver state from (if None, the solving process will be launched instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-235"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-235"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new solver (auto-cast to the level of the domain).")]),t._v(" "),a("h3",{attrs:{id:"step-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-9"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment.step()")]),t._v(" provides some boilerplate code and internally calls "),a("code",[t._v("Environment._step()")]),t._v(" (which\nreturns a transition outcome). The boilerplate code automatically stores next state into the "),a("code",[t._v("_memory")]),t._v(" attribute\nand samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment.step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment.step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable.reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-174"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-174"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-236"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-236"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"unwrapped-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-5"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"DeterministicGymDomain",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the deterministic Gym environment (gym.env) and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-237"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-237"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original Gym environment.")]),t._v(" "),a("h3",{attrs:{id:"check-value-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#check-value-10"}},[t._v("#")]),t._v(" _check_value "),a("Badge",{attrs:{text:"Rewards",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_check_value",sig:{params:[{name:"self"},{name:"value",annotation:"Value[D.T_value]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that a value is compliant with its cost specification (must be positive).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This function calls "),a("code",[t._v("PositiveCost._is_positive()")]),t._v(" to determine if a value is positive (can be overridden for\nadvanced value types).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-175"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-175"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("value")]),t._v(": The value to check.")])]),t._v(" "),a("h4",{attrs:{id:"returns-238"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-238"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the value is compliant (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-17"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-17"}},[t._v("#")]),t._v(" _get_action_space "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_action_space()")]),t._v(" internally calls "),a("code",[t._v("Events._get_action_space_()")]),t._v(" the first time and\nautomatically caches its value to make future calls more efficient (since the action space is assumed to be\nconstant).")]),t._v(" "),a("h4",{attrs:{id:"returns-239"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-239"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-action-space-18"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-action-space-18"}},[t._v("#")]),t._v(" _get_action_space_ "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_action_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the domain action space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_action_space()")]),t._v(", the difference being that the\nresult is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-240"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-240"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The action space.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-12"}},[t._v("#")]),t._v(" _get_applicable_actions "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history), or in\nthe internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-176"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-176"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-241"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-241"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-applicable-actions-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-applicable-actions-from-6"}},[t._v("#")]),t._v(" _get_applicable_actions_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_applicable_actions_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"D.T_agent[Space[D.T_event]]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of applicable actions in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_applicable_actions()")]),t._v(", the difference being that\nthe memory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-177"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-177"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-242"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-242"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of applicable actions.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-12"}},[t._v("#")]),t._v(" _get_enabled_events "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory), or in the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._get_enabled_events()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-178"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-178"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-243"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-243"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-enabled-events-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-enabled-events-from-6"}},[t._v("#")]),t._v(" _get_enabled_events_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_enabled_events_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"Space[D.T_event]"}}}),t._v(" "),a("p",[t._v("Get the space (finite or infinite set) of enabled uncontrollable events in the given memory (state or\nhistory).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._get_enabled_events()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-179"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-179"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-244"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-244"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The space of enabled events.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-2"}},[t._v("#")]),t._v(" _get_goals "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Goals._get_goals()")]),t._v(" internally calls "),a("code",[t._v("Goals._get_goals_()")]),t._v(" the first time and automatically caches\nits value to make future calls more efficient (since the goals space is assumed to be constant).")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Goal states are assumed to be fully observable (i.e. observation = state) so that there is never uncertainty\nabout whether the goal has been reached or not. This assumption guarantees that any policy that does not\nreach the goal with certainty incurs in infinite expected cost. - "),a("em",[t._v("Geffner, 2013: A Concise Introduction to\nModels and Methods for Automated Planning")])])]),t._v(" "),a("h4",{attrs:{id:"returns-245"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-245"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-goals-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-goals-3"}},[t._v("#")]),t._v(" _get_goals_ "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_goals_",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Get the domain goals space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Goals._get_goals()")]),t._v(", the difference being that the result is\nnot cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-246"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-246"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The goals space.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-8"}},[t._v("#")]),t._v(" _get_initial_state "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the (cached) initial state.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(" internally\ncalls "),a("code",[t._v("DeterministicInitialized._get_initial_state_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the initial state is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-247"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-247"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-9"}},[t._v("#")]),t._v(" _get_initial_state_ "),a("Badge",{attrs:{text:"DeterministicInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("DeterministicInitialized._get_initial_state()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("h4",{attrs:{id:"returns-248"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-248"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The initial state.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-8"}},[t._v("#")]),t._v(" _get_initial_state_distribution "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the (cached) probability distribution of initial states.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution_()")]),t._v(" the first time and automatically caches its value\nto make future calls more efficient (since the initial state distribution is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-249"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-249"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-initial-state-distribution-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-initial-state-distribution-9"}},[t._v("#")]),t._v(" _get_initial_state_distribution_ "),a("Badge",{attrs:{text:"UncertainInitialized",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_initial_state_distribution_",sig:{params:[{name:"self"}],return:"Distribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of initial states.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("UncertainInitialized._get_initial_state_distribution()")]),t._v(", the\ndifference being that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-250"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-250"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of initial states.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-9"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-9"}},[t._v("#")]),t._v(" _get_memory_maxlen "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the (cached) memory max length.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(" internally calls "),a("code",[t._v("FiniteHistory._get_memory_maxlen_()")]),t._v(" the first\ntime and automatically caches its value to make future calls more efficient (since the memory max length is\nassumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-251"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-251"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-memory-maxlen-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-memory-maxlen-10"}},[t._v("#")]),t._v(" _get_memory_maxlen_ "),a("Badge",{attrs:{text:"FiniteHistory",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_memory_maxlen_",sig:{params:[{name:"self"}],return:"int"}}}),t._v(" "),a("p",[t._v("Get the memory max length.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("FiniteHistory._get_memory_maxlen()")]),t._v(", the difference being that\nthe result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-252"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-252"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The memory max length.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-4"}},[t._v("#")]),t._v(" _get_next_state "),a("Badge",{attrs:{text:"DeterministicTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Get the next state given a memory and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-180"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-180"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-253"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-253"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The deterministic next state.")]),t._v(" "),a("h3",{attrs:{id:"get-next-state-distribution-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-next-state-distribution-4"}},[t._v("#")]),t._v(" _get_next_state_distribution "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_next_state_distribution",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"SingleValueDistribution[D.T_state]"}}}),t._v(" "),a("p",[t._v("Get the discrete probability distribution of next state given a memory and action.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("In the Markovian case (memory only holds last state "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",viewBox:"0 -442 469 452"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})])])])])]),t._v("), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function can\nbe mathematically represented by "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.292ex",height:"2.283ex",viewBox:"0 -759 4107.1 1009"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"msup",transform:"translate(1140, 0)"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1997.5, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2275.5, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2744.5, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3189.1, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3718.1, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(", where "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.94ex",height:"1.767ex",viewBox:"0 -759 857.5 781"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"msup"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"53",d:"M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(613, 363) scale(0.707)"}},[a("path",{attrs:{"data-c":"2032",d:"M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"}})])])])])])]),t._v(" is the next state random variable.")],1)]),t._v(" "),a("h4",{attrs:{id:"parameters-181"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-181"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-254"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-254"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The discrete probability distribution of next state.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-10"}},[t._v("#")]),t._v(" _get_observation "),a("Badge",{attrs:{text:"TransformedObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Get the deterministic observation given a state and action.")]),t._v(" "),a("h4",{attrs:{id:"parameters-182"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-182"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-255"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-255"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-distribution-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-distribution-10"}},[t._v("#")]),t._v(" _get_observation_distribution "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_distribution",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"},{name:"action",default:"None",annotation:"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],return:"Distribution[D.T_agent[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the probability distribution of the observation given a state and action.")]),t._v(" "),a("p",[t._v("In mathematical terms (discrete case), given an action "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.023ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.197ex",height:"1.02ex",viewBox:"0 -441 529 451"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})])])])])]),t._v(", this function represents: "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.566ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"9.078ex",height:"2.262ex",viewBox:"0 -750 4012.7 1000"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"50",d:"M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(751, 0)"}},[a("path",{attrs:{"data-c":"28",d:"M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(1140, 0)"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(1903, 0)"}},[a("path",{attrs:{"data-c":"7C",d:"M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(2181, 0)"}},[a("path",{attrs:{"data-c":"73",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(2650, 0)"}},[a("path",{attrs:{"data-c":"2C",d:"M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"}})]),a("g",{attrs:{"data-mml-node":"mi",transform:"translate(3094.7, 0)"}},[a("path",{attrs:{"data-c":"61",d:"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"}})]),a("g",{attrs:{"data-mml-node":"mo",transform:"translate(3623.7, 0)"}},[a("path",{attrs:{"data-c":"29",d:"M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"}})])])])])]),t._v(",\nwhere "),a("mjx-container",{staticClass:"MathJax",attrs:{jax:"SVG"}},[a("svg",{staticStyle:{"vertical-align":"-0.05ex"},attrs:{xmlns:"http://www.w3.org/2000/svg",width:"1.726ex",height:"1.643ex",viewBox:"0 -704 763 726"}},[a("g",{attrs:{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"matrix(1 0 0 -1 0 0)"}},[a("g",{attrs:{"data-mml-node":"math"}},[a("g",{attrs:{"data-mml-node":"mi"}},[a("path",{attrs:{"data-c":"4F",d:"M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"}})])])])])]),t._v(" is the random variable of the observation.")],1),t._v(" "),a("h4",{attrs:{id:"parameters-183"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-183"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to be observed.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The last applied action (or None if the state is an initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-256"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-256"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The probability distribution of the observation.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-14"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-14"}},[t._v("#")]),t._v(" _get_observation_space "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the (cached) observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(" internally\ncalls "),a("code",[t._v("PartiallyObservable._get_observation_space_()")]),t._v(" the first time and automatically caches its value to make\nfuture calls more efficient (since the observation space is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-257"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-257"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-observation-space-15"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-observation-space-15"}},[t._v("#")]),t._v(" _get_observation_space_ "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_observation_space_",sig:{params:[{name:"self"}],return:"D.T_agent[Space[D.T_observation]]"}}}),t._v(" "),a("p",[t._v("Get the observation space (finite or infinite set).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", the difference\nbeing that the result is not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-258"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-258"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The observation space.")]),t._v(" "),a("h3",{attrs:{id:"get-transition-value-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#get-transition-value-4"}},[t._v("#")]),t._v(" _get_transition_value "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_get_transition_value",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"},{name:"next_state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_agent[Value[D.T_value]]"}}}),t._v(" "),a("p",[t._v("Get the value (reward or cost) of a transition.")]),t._v(" "),a("p",[t._v("The transition to consider is defined by the function parameters.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If this function never depends on the next_state parameter for its computation, it is recommended to\nindicate it by overriding "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" to return\nFalse. This information can then be exploited by solvers to avoid computing next state to evaluate a\ntransition value (more efficient).")])]),t._v(" "),a("h4",{attrs:{id:"parameters-184"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-184"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")]),t._v(" "),a("li",[a("strong",[t._v("next_state")]),t._v(": The next state in which the transition ends (if needed for the computation).")])]),t._v(" "),a("h4",{attrs:{id:"returns-259"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-259"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition value (reward or cost).")]),t._v(" "),a("h3",{attrs:{id:"init-memory-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#init-memory-5"}},[t._v("#")]),t._v(" _init_memory "),a("Badge",{attrs:{text:"History",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_init_memory",sig:{params:[{name:"self"},{name:"state",default:"None",annotation:"Optional[D.T_state]"}],return:"D.T_memory[D.T_state]"}}}),t._v(" "),a("p",[t._v("Initialize memory (possibly with a state) according to its specification and return it.")]),t._v(" "),a("p",[t._v("This function is automatically called by "),a("code",[t._v("Initializable._reset()")]),t._v(" to reinitialize the internal memory whenever\nthe domain is used as an environment.")]),t._v(" "),a("h4",{attrs:{id:"parameters-185"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-185"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": An optional state to initialize the memory with (typically the initial state).")])]),t._v(" "),a("h4",{attrs:{id:"returns-260"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-260"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The new initialized memory.")]),t._v(" "),a("h3",{attrs:{id:"is-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-action-12"}},[t._v("#")]),t._v(" _is_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_action",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is an action (i.e. a controllable event for the agents).")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\naction space provided by "),a("code",[t._v("Events._get_action_space()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-186"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-186"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("event")]),t._v(": The event to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-261"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-261"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is an action (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-12"}},[t._v("#")]),t._v(" _is_applicable_action "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history), or in the internal one if\nomitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_applicable_action()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_applicable_action_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute\ninstead of the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-187"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-187"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-262"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-262"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-applicable-action-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-applicable-action-from-6"}},[t._v("#")]),t._v(" _is_applicable_action_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_applicable_action_from",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_event]"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an action is applicable in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_applicable_action()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\napplicable actions provided by "),a("code",[t._v("Events._get_applicable_actions_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-188"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-188"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-263"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-263"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the action is applicable (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-12"}},[t._v("#")]),t._v(" _is_enabled_event "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an uncontrollable event is enabled in the given memory (state or history), or in the\ninternal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Events._is_enabled_event()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Events._is_enabled_event_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead\nof the memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-189"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-189"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-264"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-264"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-enabled-event-from-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-enabled-event-from-6"}},[t._v("#")]),t._v(" _is_enabled_event_from "),a("Badge",{attrs:{text:"Events",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_enabled_event_from",sig:{params:[{name:"self"},{name:"event",annotation:"D.T_event"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether an event is enabled in the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Events._is_enabled_event()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the space of\nenabled events provided by "),a("code",[t._v("Events._get_enabled_events_from()")]),t._v(", but it can be overridden for faster\nimplementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-190"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-190"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-265"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-265"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the event is enabled (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-goal-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-goal-2"}},[t._v("#")]),t._v(" _is_goal "),a("Badge",{attrs:{text:"Goals",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_goal",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether an observation belongs to the goals.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\ngoals space provided by "),a("code",[t._v("Goals._get_goals()")]),t._v(", but it can be overridden for faster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-191"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-191"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-266"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-266"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation is a goal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-observation-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-observation-10"}},[t._v("#")]),t._v(" _is_observation "),a("Badge",{attrs:{text:"PartiallyObservable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_observation",sig:{params:[{name:"self"},{name:"observation",annotation:"D.T_agent[D.T_observation]"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Check that an observation indeed belongs to the domain observation space.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("By default, this function is implemented using the "),a("code",[t._v("skdecide.core.Space.contains()")]),t._v(" function on the domain\nobservation space provided by "),a("code",[t._v("PartiallyObservable._get_observation_space()")]),t._v(", but it can be overridden for\nfaster implementations.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-192"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-192"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("observation")]),t._v(": The observation to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-267"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-267"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the observation belongs to the domain observation space (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-positive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-positive"}},[t._v("#")]),t._v(" _is_positive "),a("Badge",{attrs:{text:"PositiveCosts",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_positive",sig:{params:[{name:"self"},{name:"cost",annotation:"D.T_value"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Determine if a value is positive (can be overridden for advanced value types).")]),t._v(" "),a("h4",{attrs:{id:"parameters-193"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-193"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("cost")]),t._v(": The cost to evaluate.")])]),t._v(" "),a("h4",{attrs:{id:"returns-268"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-268"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the cost is positive (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-terminal-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-terminal-4"}},[t._v("#")]),t._v(" _is_terminal "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_terminal",sig:{params:[{name:"self"},{name:"state",annotation:"D.T_state"}],return:"D.T_agent[D.T_predicate]"}}}),t._v(" "),a("p",[t._v("Indicate whether a state is terminal.")]),t._v(" "),a("p",[t._v("A terminal state is a state with no outgoing transition (except to itself with value 0).")]),t._v(" "),a("h4",{attrs:{id:"parameters-194"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-194"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("state")]),t._v(": The state to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-269"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-269"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the state is terminal (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-5"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation (cached).")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(" internally\ncalls "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state_()")]),t._v(" the first time and automatically\ncaches its value to make future calls more efficient (since the returned value is assumed to be constant).")]),t._v(" "),a("h4",{attrs:{id:"returns-270"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-270"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"is-transition-value-dependent-on-next-state-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#is-transition-value-dependent-on-next-state-6"}},[t._v("#")]),t._v(" _is_transition_value_dependent_on_next_state_ "),a("Badge",{attrs:{text:"UncertainTransitions",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_is_transition_value_dependent_on_next_state_",sig:{params:[{name:"self"}],return:"bool"}}}),t._v(" "),a("p",[t._v("Indicate whether _get_transition_value() requires the next_state parameter for its computation.")]),t._v(" "),a("p",[t._v("This is a helper function called by default\nfrom "),a("code",[t._v("UncertainTransitions._is_transition_value_dependent_on_next_state()")]),t._v(", the difference being that the result\nis not cached here.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("The underscore at the end of this function's name is a convention to remind that its result should be\nconstant.")])]),t._v(" "),a("h4",{attrs:{id:"returns-271"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-271"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("True if the transition value computation depends on next_state (False otherwise).")]),t._v(" "),a("h3",{attrs:{id:"render-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-10"}},[t._v("#")]),t._v(" _render "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render",sig:{params:[{name:"self"},{name:"memory",default:"None",annotation:"Optional[D.T_memory[D.T_state]]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history), or the internal one if omitted.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Renderable._render()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Renderable._render_from()")]),t._v(". The boilerplate code automatically passes the "),a("code",[t._v("_memory")]),t._v(" attribute instead of\nthe memory parameter whenever the latter is None.")]),t._v(" "),a("h4",{attrs:{id:"parameters-195"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-195"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider (if None, the internal memory attribute "),a("code",[t._v("_memory")]),t._v(" is used instead).")])]),t._v(" "),a("h4",{attrs:{id:"returns-272"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-272"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"render-from-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-from-5"}},[t._v("#")]),t._v(" _render_from "),a("Badge",{attrs:{text:"Renderable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_render_from",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"**kwargs",annotation:"Any"}],return:"Any"}}}),t._v(" "),a("p",[t._v("Compute a visual render of the given memory (state or history).")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Renderable._render()")]),t._v(", the difference being that the\nmemory parameter is mandatory here.")]),t._v(" "),a("h4",{attrs:{id:"parameters-196"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-196"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to consider.")])]),t._v(" "),a("h4",{attrs:{id:"returns-273"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-273"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A render (e.g. image) or nothing (if the function handles the display directly).")]),t._v(" "),a("h3",{attrs:{id:"reset-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-10"}},[t._v("#")]),t._v(" _reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_reset",sig:{params:[{name:"self"}],return:"D.T_agent[D.T_observation]"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial observation.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Initializable._reset()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Initializable._state_reset()")]),t._v(" (which returns an initial state). The boilerplate code automatically stores\nthe initial state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-274"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-274"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial observation.")]),t._v(" "),a("h3",{attrs:{id:"sample-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#sample-4"}},[t._v("#")]),t._v(" _sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Sample one transition of the simulator's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Simulation._sample()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Simulation._state_sample()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically\nsamples an observation corresponding to the sampled next state.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing simulator needs to be wrapped instead of implemented fully in scikit-decide (e.g. a\nsimulator), it is recommended to overwrite "),a("code",[t._v("Simulation._sample()")]),t._v(" to call the external simulator and not use\nthe "),a("code",[t._v("Simulation._state_sample()")]),t._v(" helper function.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-197"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-197"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-275"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-275"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"set-memory-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-memory-4"}},[t._v("#")]),t._v(" _set_memory "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_set_memory",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"}],return:"None"}}}),t._v(" "),a("p",[t._v("Set internal memory attribute "),a("code",[t._v("_memory")]),t._v(" to given one.")]),t._v(" "),a("p",[t._v('This can be useful to set a specific "starting point" before doing a rollout with\nsuccessive '),a("code",[t._v("Environment._step()")]),t._v(" calls.")]),t._v(" "),a("h4",{attrs:{id:"parameters-198"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-198"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The memory to set internally.")])]),t._v(" "),a("h4",{attrs:{id:"example-4"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-4"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set simulation_domain memory to my_state (assuming Markovian domain)")]),t._v("\nsimulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_set_memory"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_state"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Start a 100-steps rollout from here (applying my_action at every step)")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("for")]),t._v(" _ "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("range")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n simulation_domain"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("_step"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("my_action"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("h3",{attrs:{id:"state-reset-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-reset-5"}},[t._v("#")]),t._v(" _state_reset "),a("Badge",{attrs:{text:"Initializable",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_reset",sig:{params:[{name:"self"}],return:"D.T_state"}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and return an initial state.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Initializable._reset()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"returns-276"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-276"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("An initial state.")]),t._v(" "),a("h3",{attrs:{id:"state-sample-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-sample-2"}},[t._v("#")]),t._v(" _state_sample "),a("Badge",{attrs:{text:"Simulation",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_sample",sig:{params:[{name:"self"},{name:"memory",annotation:"D.T_memory[D.T_state]"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one sample of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Simulation._sample()")]),t._v(". It focuses on the state level, as\nopposed to the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-199"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-199"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("memory")]),t._v(": The source memory (state or history) of the transition.")]),t._v(" "),a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the given memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-277"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-277"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of the sampled transition.")]),t._v(" "),a("h3",{attrs:{id:"state-step-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#state-step-5"}},[t._v("#")]),t._v(" _state_step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_state_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Compute one step of the transition's dynamics.")]),t._v(" "),a("p",[t._v("This is a helper function called by default from "),a("code",[t._v("Environment._step()")]),t._v(". It focuses on the state level, as opposed\nto the observation one for the latter.")]),t._v(" "),a("h4",{attrs:{id:"parameters-200"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-200"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-278"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-278"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The transition outcome of this step.")]),t._v(" "),a("h3",{attrs:{id:"step-10"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-10"}},[t._v("#")]),t._v(" _step "),a("Badge",{attrs:{text:"Environment",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"_step",sig:{params:[{name:"self"},{name:"action",annotation:"D.T_agent[D.T_concurrency[D.T_event]]"}],return:"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"}}}),t._v(" "),a("p",[t._v("Run one step of the environment's dynamics.")]),t._v(" "),a("p",[t._v("By default, "),a("code",[t._v("Environment._step()")]),t._v(" provides some boilerplate code and internally\ncalls "),a("code",[t._v("Environment._state_step()")]),t._v(" (which returns a transition outcome). The boilerplate code automatically stores\nnext state into the "),a("code",[t._v("_memory")]),t._v(" attribute and samples a corresponding observation.")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Whenever an existing environment needs to be wrapped instead of implemented fully in scikit-decide (e.g. compiled\nATARI games), it is recommended to overwrite "),a("code",[t._v("Environment._step()")]),t._v(" to call the external environment and not\nuse the "),a("code",[t._v("Environment._state_step()")]),t._v(" helper function.")])]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("Before calling "),a("code",[t._v("Environment._step()")]),t._v(" the first time or when the end of an episode is\nreached, "),a("code",[t._v("Initializable._reset()")]),t._v(" must be called to reset the environment's state.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-201"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-201"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(": The action taken in the current memory (state or history) triggering the transition.")])]),t._v(" "),a("h4",{attrs:{id:"returns-279"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-279"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The environment outcome of this step.")]),t._v(" "),a("h2",{attrs:{id:"asgymenv"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#asgymenv"}},[t._v("#")]),t._v(" AsGymEnv")]),t._v(" "),a("p",[t._v("This class wraps a scikit-decide domain as an OpenAI Gym environment.")]),t._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),a("p",[t._v("The scikit-decide domain to wrap should inherit "),a("code",[t._v("UnrestrictedActionDomain")]),t._v(" since OpenAI Gym environments usually assume\nthat all their actions are always applicable.")])]),t._v(" "),a("p",[t._v("An OpenAI Gym environment encapsulates an environment with arbitrary behind-the-scenes dynamics. An environment can\nbe partially or fully observed.")]),t._v(" "),a("p",[t._v("The main API methods that users of this class need to know are:")]),t._v(" "),a("ul",[a("li",[t._v("step")]),t._v(" "),a("li",[t._v("reset")]),t._v(" "),a("li",[t._v("render")]),t._v(" "),a("li",[t._v("close")]),t._v(" "),a("li",[t._v("seed")])]),t._v(" "),a("p",[t._v("And set the following attributes:")]),t._v(" "),a("ul",[a("li",[t._v("action_space: The Space object corresponding to valid actions.")]),t._v(" "),a("li",[t._v("observation_space: The Space object corresponding to valid observations.")]),t._v(" "),a("li",[t._v("reward_range: A tuple corresponding to the min and max possible rewards.")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v('A default reward range set to [-inf,+inf] already exists. Set it if you want a narrower range. The methods are\naccessed publicly as "step", "reset", etc.. The non-underscored versions are wrapper methods to which\nfunctionality may be added over time.')])]),t._v(" "),a("h3",{attrs:{id:"constructor-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#constructor-8"}},[t._v("#")]),t._v(" Constructor "),a("Badge",{attrs:{text:"AsGymEnv",type:"tip"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"AsGymEnv",sig:{params:[{name:"domain",annotation:"Domain"},{name:"unwrap_spaces",default:"True",annotation:"bool"}],return:"None"}}}),t._v(" "),a("p",[t._v("Initialize AsGymEnv.")]),t._v(" "),a("h4",{attrs:{id:"parameters-202"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-202"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("domain")]),t._v(": The scikit-decide domain to wrap as an OpenAI Gym environment.")]),t._v(" "),a("li",[a("strong",[t._v("unwrap_spaces")]),t._v(": Boolean specifying whether the action & observation spaces should be unwrapped.")])]),t._v(" "),a("h3",{attrs:{id:"close"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#close"}},[t._v("#")]),t._v(" close "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"close",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Override close in your subclass to perform any necessary cleanup.")]),t._v(" "),a("p",[t._v("Environments will automatically close() themselves when garbage collected or when the program exits.")]),t._v(" "),a("h3",{attrs:{id:"render-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#render-11"}},[t._v("#")]),t._v(" render "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"render",sig:{params:[{name:"self"},{name:"mode",default:"human"}]}}}),t._v(" "),a("p",[t._v("Render the environment.")]),t._v(" "),a("p",[t._v("The set of supported modes varies per environment. (And some environments do not support rendering at all.) By\nconvention, if mode is:")]),t._v(" "),a("ul",[a("li",[t._v("human: Render to the current display or terminal and return nothing. Usually for human consumption.")]),t._v(" "),a("li",[t._v("rgb_array: Return an numpy.ndarray with shape (x, y, 3), representing RGB values for an x-by-y pixel image,\nsuitable for turning into a video.")]),t._v(" "),a("li",[t._v("ansi: Return a string (str) or StringIO.StringIO containing a terminal-style text representation. The text can\ninclude newlines and ANSI escape sequences (e.g. for colors).")])]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("Make sure that your class's metadata 'render.modes' key includes he list of supported modes. It's\nrecommended to call super() in implementations to use the functionality of this method.")])]),t._v(" "),a("h4",{attrs:{id:"parameters-203"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-203"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("mode")]),t._v(" (str): The mode to render with.")]),t._v(" "),a("li",[a("strong",[t._v("close")]),t._v(" (bool): Close all open renderings.")])]),t._v(" "),a("h4",{attrs:{id:"example-5"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-5"}},[t._v("#")]),t._v(" Example")]),t._v(" "),a("div",{staticClass:"language-python extra-class"},[a("pre",{pre:!0,attrs:{class:"language-python"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("class")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token class-name"}},[t._v("MyEnv")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("Env"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n metadata "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'render.modes'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'human'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'rgb_array'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("def")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("render")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("self"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" mode"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'human'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("if")]),t._v(" mode "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("==")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'rgb_array'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("return")]),t._v(" np"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("array"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# return RGB frame suitable for video")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("elif")]),t._v(" mode "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("is")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'human'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# pop up a window and render")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("else")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token builtin"}},[t._v("super")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("MyEnv"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" self"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("render"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("mode"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("mode"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# just raise an exception")]),t._v("\n")])])]),a("h3",{attrs:{id:"reset-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reset-11"}},[t._v("#")]),t._v(" reset "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"reset",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Reset the state of the environment and returns an initial observation.")]),t._v(" "),a("h4",{attrs:{id:"returns-280"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-280"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("observation (object): The initial observation of the space.")]),t._v(" "),a("h3",{attrs:{id:"seed"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#seed"}},[t._v("#")]),t._v(" seed "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"seed",sig:{params:[{name:"self"},{name:"seed",default:"None"}]}}}),t._v(" "),a("p",[t._v("Sets the seed for this env's random number generator(s).")]),t._v(" "),a("p",[t._v("Note:\nSome environments use multiple pseudorandom number generators.\nWe want to capture all such seeds used in order to ensure that\nthere aren't accidental correlations between multiple generators.")]),t._v(" "),a("p",[t._v("Returns:\nlist: Returns the list of seeds used in this env's random\nnumber generators. The first value in the list should be the\n\"main\" seed, or the value which a reproducer should pass to\n'seed'. Often, the main seed equals the provided 'seed', but\nthis won't be true if seed=None, for example.")]),t._v(" "),a("h3",{attrs:{id:"step-11"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#step-11"}},[t._v("#")]),t._v(" step "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"step",sig:{params:[{name:"self"},{name:"action"}]}}}),t._v(" "),a("p",[t._v("Run one timestep of the environment's dynamics. When end of episode is reached, you are responsible for\ncalling "),a("code",[t._v("reset()")]),t._v(" to reset this environment's state.")]),t._v(" "),a("p",[t._v("Accepts an action and returns a tuple (observation, reward, done, info).")]),t._v(" "),a("h4",{attrs:{id:"parameters-204"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#parameters-204"}},[t._v("#")]),t._v(" Parameters")]),t._v(" "),a("ul",[a("li",[a("strong",[t._v("action")]),t._v(" (object): An action provided by the environment.")])]),t._v(" "),a("h4",{attrs:{id:"returns-281"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-281"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("A tuple with following elements:")]),t._v(" "),a("ul",[a("li",[t._v("observation (object): The agent's observation of the current environment.")]),t._v(" "),a("li",[t._v("reward (float) : The amount of reward returned after previous action.")]),t._v(" "),a("li",[t._v("done (boolean): Whether the episode ended, in which case further step() calls will return undefined results.")]),t._v(" "),a("li",[t._v("info (dict): Contains auxiliary diagnostic information (helpful for debugging, and sometimes learning).")])]),t._v(" "),a("h3",{attrs:{id:"unwrapped-6"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#unwrapped-6"}},[t._v("#")]),t._v(" unwrapped "),a("Badge",{attrs:{text:"Env",type:"warn"}})],1),t._v(" "),a("skdecide-signature",{attrs:{name:"unwrapped",sig:{params:[{name:"self"}]}}}),t._v(" "),a("p",[t._v("Unwrap the scikit-decide domain and return it.")]),t._v(" "),a("h4",{attrs:{id:"returns-282"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#returns-282"}},[t._v("#")]),t._v(" Returns")]),t._v(" "),a("p",[t._v("The original scikit-decide domain.")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/64.729ad317.js b/assets/js/64.2d2cdb9b.js similarity index 98% rename from assets/js/64.729ad317.js rename to assets/js/64.2d2cdb9b.js index b4e2decc62..98cdccd54f 100644 --- a/assets/js/64.729ad317.js +++ b/assets/js/64.2d2cdb9b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{575:function(e,a,t){"use strict";t.r(a);var s=t(38),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"hub-domain-mastermind-mastermind"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-mastermind-mastermind"}},[e._v("#")]),e._v(" hub.domain.mastermind.mastermind")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),t("skdecide-summary")],1),e._v(" "),t("h2",{attrs:{id:"score"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#score"}},[e._v("#")]),e._v(" Score")]),e._v(" "),t("p",[e._v("Score(total_bulls, total_cows)")]),e._v(" "),t("h3",{attrs:{id:"asdict"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#asdict"}},[e._v("#")]),e._v(" _asdict "),t("Badge",{attrs:{text:"Score",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_asdict",sig:{params:[{name:"self"}]}}}),e._v(" "),t("p",[e._v("Return a new OrderedDict which maps field names to their values.")]),e._v(" "),t("h3",{attrs:{id:"make"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#make"}},[e._v("#")]),e._v(" _make "),t("Badge",{attrs:{text:"Score",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_make",sig:{params:[{name:"iterable"}]}}}),e._v(" "),t("p",[e._v("Make a new Score object from a sequence or iterable")]),e._v(" "),t("h3",{attrs:{id:"replace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#replace"}},[e._v("#")]),e._v(" _replace "),t("Badge",{attrs:{text:"Score",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_replace",sig:{params:[{name:"_self"},{name:"**kwds"}]}}}),e._v(" "),t("p",[e._v("Return a new Score object replacing specified fields with new values")]),e._v(" "),t("h2",{attrs:{id:"state"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#state"}},[e._v("#")]),e._v(" State")]),e._v(" "),t("p",[e._v("State(solution, score)")]),e._v(" "),t("h3",{attrs:{id:"asdict-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#asdict-2"}},[e._v("#")]),e._v(" _asdict "),t("Badge",{attrs:{text:"State",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_asdict",sig:{params:[{name:"self"}]}}}),e._v(" "),t("p",[e._v("Return a new OrderedDict which maps field names to their values.")]),e._v(" "),t("h3",{attrs:{id:"make-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#make-2"}},[e._v("#")]),e._v(" _make "),t("Badge",{attrs:{text:"State",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_make",sig:{params:[{name:"iterable"}]}}}),e._v(" "),t("p",[e._v("Make a new State object from a sequence or iterable")]),e._v(" "),t("h3",{attrs:{id:"replace-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#replace-2"}},[e._v("#")]),e._v(" _replace "),t("Badge",{attrs:{text:"State",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_replace",sig:{params:[{name:"_self"},{name:"**kwds"}]}}}),e._v(" "),t("p",[e._v("Return a new State object replacing specified fields with new values")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{576:function(e,a,t){"use strict";t.r(a);var s=t(38),r=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"hub-domain-mastermind-mastermind"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-mastermind-mastermind"}},[e._v("#")]),e._v(" hub.domain.mastermind.mastermind")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),t("skdecide-summary")],1),e._v(" "),t("h2",{attrs:{id:"score"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#score"}},[e._v("#")]),e._v(" Score")]),e._v(" "),t("p",[e._v("Score(total_bulls, total_cows)")]),e._v(" "),t("h3",{attrs:{id:"asdict"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#asdict"}},[e._v("#")]),e._v(" _asdict "),t("Badge",{attrs:{text:"Score",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_asdict",sig:{params:[{name:"self"}]}}}),e._v(" "),t("p",[e._v("Return a new OrderedDict which maps field names to their values.")]),e._v(" "),t("h3",{attrs:{id:"make"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#make"}},[e._v("#")]),e._v(" _make "),t("Badge",{attrs:{text:"Score",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_make",sig:{params:[{name:"iterable"}]}}}),e._v(" "),t("p",[e._v("Make a new Score object from a sequence or iterable")]),e._v(" "),t("h3",{attrs:{id:"replace"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#replace"}},[e._v("#")]),e._v(" _replace "),t("Badge",{attrs:{text:"Score",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_replace",sig:{params:[{name:"_self"},{name:"**kwds"}]}}}),e._v(" "),t("p",[e._v("Return a new Score object replacing specified fields with new values")]),e._v(" "),t("h2",{attrs:{id:"state"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#state"}},[e._v("#")]),e._v(" State")]),e._v(" "),t("p",[e._v("State(solution, score)")]),e._v(" "),t("h3",{attrs:{id:"asdict-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#asdict-2"}},[e._v("#")]),e._v(" _asdict "),t("Badge",{attrs:{text:"State",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_asdict",sig:{params:[{name:"self"}]}}}),e._v(" "),t("p",[e._v("Return a new OrderedDict which maps field names to their values.")]),e._v(" "),t("h3",{attrs:{id:"make-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#make-2"}},[e._v("#")]),e._v(" _make "),t("Badge",{attrs:{text:"State",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_make",sig:{params:[{name:"iterable"}]}}}),e._v(" "),t("p",[e._v("Make a new State object from a sequence or iterable")]),e._v(" "),t("h3",{attrs:{id:"replace-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#replace-2"}},[e._v("#")]),e._v(" _replace "),t("Badge",{attrs:{text:"State",type:"tip"}})],1),e._v(" "),t("skdecide-signature",{attrs:{name:"_replace",sig:{params:[{name:"_self"},{name:"**kwds"}]}}}),e._v(" "),t("p",[e._v("Return a new State object replacing specified fields with new values")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/65.9fc9742c.js b/assets/js/65.15dcaa17.js similarity index 96% rename from assets/js/65.9fc9742c.js rename to assets/js/65.15dcaa17.js index 15cd991559..d5ac94456e 100644 --- a/assets/js/65.9fc9742c.js +++ b/assets/js/65.15dcaa17.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{576:function(t,a,e){"use strict";e.r(a);var s=e(38),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"hub-domain-maze-maze"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-maze-maze"}},[t._v("#")]),t._v(" hub.domain.maze.maze")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"state"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#state"}},[t._v("#")]),t._v(" State")]),t._v(" "),e("p",[t._v("State(x, y)")]),t._v(" "),e("h3",{attrs:{id:"asdict"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asdict"}},[t._v("#")]),t._v(" _asdict "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_asdict",sig:{params:[{name:"self"}]}}}),t._v(" "),e("p",[t._v("Return a new OrderedDict which maps field names to their values.")]),t._v(" "),e("h3",{attrs:{id:"make"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#make"}},[t._v("#")]),t._v(" _make "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_make",sig:{params:[{name:"iterable"}]}}}),t._v(" "),e("p",[t._v("Make a new State object from a sequence or iterable")]),t._v(" "),e("h3",{attrs:{id:"replace"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#replace"}},[t._v("#")]),t._v(" _replace "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_replace",sig:{params:[{name:"_self"},{name:"**kwds"}]}}}),t._v(" "),e("p",[t._v("Return a new State object replacing specified fields with new values")]),t._v(" "),e("h2",{attrs:{id:"action"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[t._v("#")]),t._v(" Action")]),t._v(" "),e("p",[t._v("An enumeration.")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{577:function(t,a,e){"use strict";e.r(a);var s=e(38),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"hub-domain-maze-maze"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-maze-maze"}},[t._v("#")]),t._v(" hub.domain.maze.maze")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"state"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#state"}},[t._v("#")]),t._v(" State")]),t._v(" "),e("p",[t._v("State(x, y)")]),t._v(" "),e("h3",{attrs:{id:"asdict"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asdict"}},[t._v("#")]),t._v(" _asdict "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_asdict",sig:{params:[{name:"self"}]}}}),t._v(" "),e("p",[t._v("Return a new OrderedDict which maps field names to their values.")]),t._v(" "),e("h3",{attrs:{id:"make"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#make"}},[t._v("#")]),t._v(" _make "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_make",sig:{params:[{name:"iterable"}]}}}),t._v(" "),e("p",[t._v("Make a new State object from a sequence or iterable")]),t._v(" "),e("h3",{attrs:{id:"replace"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#replace"}},[t._v("#")]),t._v(" _replace "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_replace",sig:{params:[{name:"_self"},{name:"**kwds"}]}}}),t._v(" "),e("p",[t._v("Return a new State object replacing specified fields with new values")]),t._v(" "),e("h2",{attrs:{id:"action"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[t._v("#")]),t._v(" Action")]),t._v(" "),e("p",[t._v("An enumeration.")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/66.bc5b48df.js b/assets/js/66.50880736.js similarity index 90% rename from assets/js/66.bc5b48df.js rename to assets/js/66.50880736.js index 18e0849342..5b7d938b89 100644 --- a/assets/js/66.bc5b48df.js +++ b/assets/js/66.50880736.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{577:function(s,t,i){"use strict";i.r(t);var a=i(38),c=Object(a.a)({},(function(){var s=this.$createElement,t=this._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"hub-domain-rcpsp-rcpsp-sk"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-rcpsp-rcpsp-sk"}},[this._v("#")]),this._v(" hub.domain.rcpsp.rcpsp_sk")]),this._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),t("skdecide-summary")],1)])}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{578:function(s,t,i){"use strict";i.r(t);var a=i(38),c=Object(a.a)({},(function(){var s=this.$createElement,t=this._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"hub-domain-rcpsp-rcpsp-sk"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-rcpsp-rcpsp-sk"}},[this._v("#")]),this._v(" hub.domain.rcpsp.rcpsp_sk")]),this._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),t("skdecide-summary")],1)])}),[],!1,null,null,null);t.default=c.exports}}]); \ No newline at end of file diff --git a/assets/js/67.f5fd51be.js b/assets/js/67.e48117f5.js similarity index 90% rename from assets/js/67.f5fd51be.js rename to assets/js/67.e48117f5.js index 907baa596a..5903db3872 100644 --- a/assets/js/67.f5fd51be.js +++ b/assets/js/67.e48117f5.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{578:function(s,t,i){"use strict";i.r(t);var r=i(38),a=Object(r.a)({},(function(){var s=this.$createElement,t=this._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"hub-domain-rcpsp-rcpsp-sk-parser"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-rcpsp-rcpsp-sk-parser"}},[this._v("#")]),this._v(" hub.domain.rcpsp.rcpsp_sk_parser")]),this._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),t("skdecide-summary")],1)])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{579:function(s,t,i){"use strict";i.r(t);var r=i(38),a=Object(r.a)({},(function(){var s=this.$createElement,t=this._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"hub-domain-rcpsp-rcpsp-sk-parser"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-rcpsp-rcpsp-sk-parser"}},[this._v("#")]),this._v(" hub.domain.rcpsp.rcpsp_sk_parser")]),this._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),t("skdecide-summary")],1)])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/68.e9188f2e.js b/assets/js/68.6c776358.js similarity index 97% rename from assets/js/68.e9188f2e.js rename to assets/js/68.6c776358.js index 3e6aaea8fb..f5ffd5eb0c 100644 --- a/assets/js/68.e9188f2e.js +++ b/assets/js/68.6c776358.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{579:function(t,a,e){"use strict";e.r(a);var s=e(38),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"hub-domain-rock-paper-scissors-rock-paper-scissors"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-rock-paper-scissors-rock-paper-scissors"}},[t._v("#")]),t._v(" hub.domain.rock_paper_scissors.rock_paper_scissors")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"move"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#move"}},[t._v("#")]),t._v(" Move")]),t._v(" "),e("p",[t._v("An enumeration.")]),t._v(" "),e("h2",{attrs:{id:"state"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#state"}},[t._v("#")]),t._v(" State")]),t._v(" "),e("p",[t._v("State(num_move,)")]),t._v(" "),e("h3",{attrs:{id:"asdict"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asdict"}},[t._v("#")]),t._v(" _asdict "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_asdict",sig:{params:[{name:"self"}]}}}),t._v(" "),e("p",[t._v("Return a new OrderedDict which maps field names to their values.")]),t._v(" "),e("h3",{attrs:{id:"make"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#make"}},[t._v("#")]),t._v(" _make "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_make",sig:{params:[{name:"iterable"}]}}}),t._v(" "),e("p",[t._v("Make a new State object from a sequence or iterable")]),t._v(" "),e("h3",{attrs:{id:"replace"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#replace"}},[t._v("#")]),t._v(" _replace "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_replace",sig:{params:[{name:"_self"},{name:"**kwds"}]}}}),t._v(" "),e("p",[t._v("Return a new State object replacing specified fields with new values")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{580:function(t,a,e){"use strict";e.r(a);var s=e(38),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"hub-domain-rock-paper-scissors-rock-paper-scissors"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-rock-paper-scissors-rock-paper-scissors"}},[t._v("#")]),t._v(" hub.domain.rock_paper_scissors.rock_paper_scissors")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"move"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#move"}},[t._v("#")]),t._v(" Move")]),t._v(" "),e("p",[t._v("An enumeration.")]),t._v(" "),e("h2",{attrs:{id:"state"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#state"}},[t._v("#")]),t._v(" State")]),t._v(" "),e("p",[t._v("State(num_move,)")]),t._v(" "),e("h3",{attrs:{id:"asdict"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asdict"}},[t._v("#")]),t._v(" _asdict "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_asdict",sig:{params:[{name:"self"}]}}}),t._v(" "),e("p",[t._v("Return a new OrderedDict which maps field names to their values.")]),t._v(" "),e("h3",{attrs:{id:"make"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#make"}},[t._v("#")]),t._v(" _make "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_make",sig:{params:[{name:"iterable"}]}}}),t._v(" "),e("p",[t._v("Make a new State object from a sequence or iterable")]),t._v(" "),e("h3",{attrs:{id:"replace"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#replace"}},[t._v("#")]),t._v(" _replace "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_replace",sig:{params:[{name:"_self"},{name:"**kwds"}]}}}),t._v(" "),e("p",[t._v("Return a new State object replacing specified fields with new values")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/69.87bd401b.js b/assets/js/69.fb1f66c4.js similarity index 97% rename from assets/js/69.87bd401b.js rename to assets/js/69.fb1f66c4.js index 800d2cf040..06acae8ca3 100644 --- a/assets/js/69.87bd401b.js +++ b/assets/js/69.fb1f66c4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{580:function(t,a,e){"use strict";e.r(a);var s=e(38),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"hub-domain-simple-grid-world-simple-grid-world"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-simple-grid-world-simple-grid-world"}},[t._v("#")]),t._v(" hub.domain.simple_grid_world.simple_grid_world")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"state"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#state"}},[t._v("#")]),t._v(" State")]),t._v(" "),e("p",[t._v("State(x, y)")]),t._v(" "),e("h3",{attrs:{id:"asdict"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asdict"}},[t._v("#")]),t._v(" _asdict "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_asdict",sig:{params:[{name:"self"}]}}}),t._v(" "),e("p",[t._v("Return a new OrderedDict which maps field names to their values.")]),t._v(" "),e("h3",{attrs:{id:"make"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#make"}},[t._v("#")]),t._v(" _make "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_make",sig:{params:[{name:"iterable"}]}}}),t._v(" "),e("p",[t._v("Make a new State object from a sequence or iterable")]),t._v(" "),e("h3",{attrs:{id:"replace"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#replace"}},[t._v("#")]),t._v(" _replace "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_replace",sig:{params:[{name:"_self"},{name:"**kwds"}]}}}),t._v(" "),e("p",[t._v("Return a new State object replacing specified fields with new values")]),t._v(" "),e("h2",{attrs:{id:"action"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[t._v("#")]),t._v(" Action")]),t._v(" "),e("p",[t._v("An enumeration.")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{581:function(t,a,e){"use strict";e.r(a);var s=e(38),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"hub-domain-simple-grid-world-simple-grid-world"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-domain-simple-grid-world-simple-grid-world"}},[t._v("#")]),t._v(" hub.domain.simple_grid_world.simple_grid_world")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"state"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#state"}},[t._v("#")]),t._v(" State")]),t._v(" "),e("p",[t._v("State(x, y)")]),t._v(" "),e("h3",{attrs:{id:"asdict"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#asdict"}},[t._v("#")]),t._v(" _asdict "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_asdict",sig:{params:[{name:"self"}]}}}),t._v(" "),e("p",[t._v("Return a new OrderedDict which maps field names to their values.")]),t._v(" "),e("h3",{attrs:{id:"make"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#make"}},[t._v("#")]),t._v(" _make "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_make",sig:{params:[{name:"iterable"}]}}}),t._v(" "),e("p",[t._v("Make a new State object from a sequence or iterable")]),t._v(" "),e("h3",{attrs:{id:"replace"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#replace"}},[t._v("#")]),t._v(" _replace "),e("Badge",{attrs:{text:"State",type:"tip"}})],1),t._v(" "),e("skdecide-signature",{attrs:{name:"_replace",sig:{params:[{name:"_self"},{name:"**kwds"}]}}}),t._v(" "),e("p",[t._v("Return a new State object replacing specified fields with new values")]),t._v(" "),e("h2",{attrs:{id:"action"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#action"}},[t._v("#")]),t._v(" Action")]),t._v(" "),e("p",[t._v("An enumeration.")])],1)}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/70.5ae5bad4.js b/assets/js/70.16f7a11c.js similarity index 90% rename from assets/js/70.5ae5bad4.js rename to assets/js/70.16f7a11c.js index f20a2b5445..b72fc4ab17 100644 --- a/assets/js/70.5ae5bad4.js +++ b/assets/js/70.16f7a11c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{581:function(t,s,a){"use strict";a.r(s);var o=a(38),i=Object(o.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-aostar-aostar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-aostar-aostar"}},[this._v("#")]),this._v(" hub.solver.aostar.aostar")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{582:function(t,s,a){"use strict";a.r(s);var o=a(38),i=Object(o.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-aostar-aostar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-aostar-aostar"}},[this._v("#")]),this._v(" hub.solver.aostar.aostar")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/71.02251787.js b/assets/js/71.3dd1e6ad.js similarity index 92% rename from assets/js/71.02251787.js rename to assets/js/71.3dd1e6ad.js index d1421ebf02..d5f49397e1 100644 --- a/assets/js/71.02251787.js +++ b/assets/js/71.3dd1e6ad.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{582:function(t,s,a){"use strict";a.r(s);var e=a(38),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"hub-solver-ars-ars"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-ars-ars"}},[t._v("#")]),t._v(" hub.solver.ars.ars")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"flatten"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#flatten"}},[t._v("#")]),t._v(" flatten")]),t._v(" "),a("skdecide-signature",{attrs:{name:"flatten",sig:{params:[{name:"c"}]}}}),t._v(" "),a("p",[t._v("Generator flattening the structure")])],1)}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{583:function(t,s,a){"use strict";a.r(s);var e=a(38),r=Object(e.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"hub-solver-ars-ars"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-ars-ars"}},[t._v("#")]),t._v(" hub.solver.ars.ars")]),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),a("skdecide-summary")],1),t._v(" "),a("h2",{attrs:{id:"flatten"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#flatten"}},[t._v("#")]),t._v(" flatten")]),t._v(" "),a("skdecide-signature",{attrs:{name:"flatten",sig:{params:[{name:"c"}]}}}),t._v(" "),a("p",[t._v("Generator flattening the structure")])],1)}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/72.e6058bba.js b/assets/js/72.f0021b91.js similarity index 90% rename from assets/js/72.e6058bba.js rename to assets/js/72.f0021b91.js index 8e2d4de6c2..abc1e57c42 100644 --- a/assets/js/72.e6058bba.js +++ b/assets/js/72.f0021b91.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{588:function(t,s,a){"use strict";a.r(s);var i=a(38),r=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-astar-astar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-astar-astar"}},[this._v("#")]),this._v(" hub.solver.astar.astar")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{584:function(t,s,a){"use strict";a.r(s);var i=a(38),r=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-astar-astar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-astar-astar"}},[this._v("#")]),this._v(" hub.solver.astar.astar")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/73.db870ad5.js b/assets/js/73.90e04b60.js similarity index 90% rename from assets/js/73.db870ad5.js rename to assets/js/73.90e04b60.js index 610058dc15..d886a8863b 100644 --- a/assets/js/73.db870ad5.js +++ b/assets/js/73.90e04b60.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{589:function(s,t,i){"use strict";i.r(t);var e=i(38),a=Object(e.a)({},(function(){var s=this.$createElement,t=this._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"hub-solver-bfws-bfws"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-bfws-bfws"}},[this._v("#")]),this._v(" hub.solver.bfws.bfws")]),this._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),t("skdecide-summary")],1)])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{585:function(s,t,i){"use strict";i.r(t);var e=i(38),a=Object(e.a)({},(function(){var s=this.$createElement,t=this._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[t("h1",{attrs:{id:"hub-solver-bfws-bfws"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-bfws-bfws"}},[this._v("#")]),this._v(" hub.solver.bfws.bfws")]),this._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),t("skdecide-summary")],1)])}),[],!1,null,null,null);t.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/74.54b6c457.js b/assets/js/74.9c7f0c6e.js similarity index 97% rename from assets/js/74.54b6c457.js rename to assets/js/74.9c7f0c6e.js index 4ddc35ec71..b3aded90ad 100644 --- a/assets/js/74.54b6c457.js +++ b/assets/js/74.9c7f0c6e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{590:function(a,t,e){"use strict";e.r(t);var r=e(38),s=Object(r.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-cgp-cgp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-cgp-cgp"}},[a._v("#")]),a._v(" hub.solver.cgp.cgp")]),a._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[a._v("Domain specification")]),a._v(" "),e("skdecide-summary")],1),a._v(" "),e("h2",{attrs:{id:"flatten"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#flatten"}},[a._v("#")]),a._v(" flatten")]),a._v(" "),e("skdecide-signature",{attrs:{name:"flatten",sig:{params:[{name:"c"}]}}}),a._v(" "),e("p",[a._v("Generator flattening the structure")]),a._v(" "),e("blockquote",[e("blockquote",[e("blockquote",[e("p",[a._v('list(flatten([2, [2, "test", [4,5, [7], [2, [6, 2, 6, [6], 4]], 6]]]))\n[2, 2, "test", 4, 5, 7, 2, 6, 2, 6, 6, 4, 6]')])])])]),a._v(" "),e("h2",{attrs:{id:"norm-and-flatten"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#norm-and-flatten"}},[a._v("#")]),a._v(" norm_and_flatten")]),a._v(" "),e("skdecide-signature",{attrs:{name:"norm_and_flatten",sig:{params:[{name:"vals"},{name:"types"}]}}}),a._v(" "),e("p",[a._v("Flatten and normalise according to AIGYM type (BOX, DISCRETE, TUPLE)\n:param vals: a np array structure\n:param types: the gym type corresponding to the vals arrays\n:return: a flatten array with normalised vals")]),a._v(" "),e("h2",{attrs:{id:"norm"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#norm"}},[a._v("#")]),a._v(" norm")]),a._v(" "),e("skdecide-signature",{attrs:{name:"norm",sig:{params:[{name:"vals"},{name:"types"}]}}}),a._v(" "),e("p",[a._v("Normalise according to AIGYM type (BOX, DISCRETE, TUPLE)\n:param vals: a np array structure\n:param types: the gym type corresponding to the vals arrays\n:return: array with normalised vals")]),a._v(" "),e("h2",{attrs:{id:"denorm"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#denorm"}},[a._v("#")]),a._v(" denorm")]),a._v(" "),e("skdecide-signature",{attrs:{name:"denorm",sig:{params:[{name:"vals"},{name:"types"}]}}}),a._v(" "),e("p",[a._v("Denormalize values according to AIGYM types (BOX, DISCRETE, TUPLE)\n:param vals: an array of [-1,1] normalised values\n:param types: the gym types corresponding to vals\n:return: the same vals array with denormalised values")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{586:function(a,t,e){"use strict";e.r(t);var r=e(38),s=Object(r.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-cgp-cgp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-cgp-cgp"}},[a._v("#")]),a._v(" hub.solver.cgp.cgp")]),a._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[a._v("Domain specification")]),a._v(" "),e("skdecide-summary")],1),a._v(" "),e("h2",{attrs:{id:"flatten"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#flatten"}},[a._v("#")]),a._v(" flatten")]),a._v(" "),e("skdecide-signature",{attrs:{name:"flatten",sig:{params:[{name:"c"}]}}}),a._v(" "),e("p",[a._v("Generator flattening the structure")]),a._v(" "),e("blockquote",[e("blockquote",[e("blockquote",[e("p",[a._v('list(flatten([2, [2, "test", [4,5, [7], [2, [6, 2, 6, [6], 4]], 6]]]))\n[2, 2, "test", 4, 5, 7, 2, 6, 2, 6, 6, 4, 6]')])])])]),a._v(" "),e("h2",{attrs:{id:"norm-and-flatten"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#norm-and-flatten"}},[a._v("#")]),a._v(" norm_and_flatten")]),a._v(" "),e("skdecide-signature",{attrs:{name:"norm_and_flatten",sig:{params:[{name:"vals"},{name:"types"}]}}}),a._v(" "),e("p",[a._v("Flatten and normalise according to AIGYM type (BOX, DISCRETE, TUPLE)\n:param vals: a np array structure\n:param types: the gym type corresponding to the vals arrays\n:return: a flatten array with normalised vals")]),a._v(" "),e("h2",{attrs:{id:"norm"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#norm"}},[a._v("#")]),a._v(" norm")]),a._v(" "),e("skdecide-signature",{attrs:{name:"norm",sig:{params:[{name:"vals"},{name:"types"}]}}}),a._v(" "),e("p",[a._v("Normalise according to AIGYM type (BOX, DISCRETE, TUPLE)\n:param vals: a np array structure\n:param types: the gym type corresponding to the vals arrays\n:return: array with normalised vals")]),a._v(" "),e("h2",{attrs:{id:"denorm"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#denorm"}},[a._v("#")]),a._v(" denorm")]),a._v(" "),e("skdecide-signature",{attrs:{name:"denorm",sig:{params:[{name:"vals"},{name:"types"}]}}}),a._v(" "),e("p",[a._v("Denormalize values according to AIGYM types (BOX, DISCRETE, TUPLE)\n:param vals: an array of [-1,1] normalised values\n:param types: the gym types corresponding to vals\n:return: the same vals array with denormalised values")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/75.c4bf820a.js b/assets/js/75.5deda9e6.js similarity index 90% rename from assets/js/75.c4bf820a.js rename to assets/js/75.5deda9e6.js index e990e9eb26..b3b1fc4ce0 100644 --- a/assets/js/75.c4bf820a.js +++ b/assets/js/75.5deda9e6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{591:function(t,s,c){"use strict";c.r(s);var i=c(38),e=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-cgp-pycgp-cgp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-cgp-pycgp-cgp"}},[this._v("#")]),this._v(" hub.solver.cgp.pycgp.cgp")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{587:function(t,s,c){"use strict";c.r(s);var i=c(38),e=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-cgp-pycgp-cgp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-cgp-pycgp-cgp"}},[this._v("#")]),this._v(" hub.solver.cgp.pycgp.cgp")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/76.7fe24ca3.js b/assets/js/76.adf7b8fd.js similarity index 90% rename from assets/js/76.7fe24ca3.js rename to assets/js/76.adf7b8fd.js index 761ee5a357..d152550d92 100644 --- a/assets/js/76.7fe24ca3.js +++ b/assets/js/76.adf7b8fd.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{592:function(t,s,e){"use strict";e.r(s);var c=e(38),i=Object(c.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-cgp-pycgp-cgpes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-cgp-pycgp-cgpes"}},[this._v("#")]),this._v(" hub.solver.cgp.pycgp.cgpes")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{588:function(t,s,e){"use strict";e.r(s);var c=e(38),i=Object(c.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-cgp-pycgp-cgpes"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-cgp-pycgp-cgpes"}},[this._v("#")]),this._v(" hub.solver.cgp.pycgp.cgpes")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/77.fc52da21.js b/assets/js/77.71b206d1.js similarity index 90% rename from assets/js/77.fc52da21.js rename to assets/js/77.71b206d1.js index 2e004a4852..860d850e3d 100644 --- a/assets/js/77.fc52da21.js +++ b/assets/js/77.71b206d1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{593:function(t,s,c){"use strict";c.r(s);var i=c(38),e=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-cgp-pycgp-cgpfunctions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-cgp-pycgp-cgpfunctions"}},[this._v("#")]),this._v(" hub.solver.cgp.pycgp.cgpfunctions")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{589:function(t,s,c){"use strict";c.r(s);var i=c(38),e=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-cgp-pycgp-cgpfunctions"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-cgp-pycgp-cgpfunctions"}},[this._v("#")]),this._v(" hub.solver.cgp.pycgp.cgpfunctions")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/78.035fe9d5.js b/assets/js/78.6220d0c0.js similarity index 90% rename from assets/js/78.035fe9d5.js rename to assets/js/78.6220d0c0.js index ef91e52411..d0710bf24a 100644 --- a/assets/js/78.035fe9d5.js +++ b/assets/js/78.6220d0c0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{594:function(t,s,a){"use strict";a.r(s);var e=a(38),i=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-cgp-pycgp-evaluator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-cgp-pycgp-evaluator"}},[this._v("#")]),this._v(" hub.solver.cgp.pycgp.evaluator")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{590:function(t,s,a){"use strict";a.r(s);var e=a(38),i=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-cgp-pycgp-evaluator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-cgp-pycgp-evaluator"}},[this._v("#")]),this._v(" hub.solver.cgp.pycgp.evaluator")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/79.f0286e63.js b/assets/js/79.20b9a5eb.js similarity index 92% rename from assets/js/79.f0286e63.js rename to assets/js/79.20b9a5eb.js index bf60952dea..8bdcdb913d 100644 --- a/assets/js/79.f0286e63.js +++ b/assets/js/79.20b9a5eb.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{595:function(s,t,e){"use strict";e.r(t);var o=e(38),l=Object(o.a)({},(function(){var s=this,t=s.$createElement,e=s._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-do-solver-do-solver-scheduling"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-do-solver-do-solver-scheduling"}},[s._v("#")]),s._v(" hub.solver.do_solver.do_solver_scheduling")]),s._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[s._v("Domain specification")]),s._v(" "),e("skdecide-summary")],1),s._v(" "),e("h2",{attrs:{id:"solvingmethod"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#solvingmethod"}},[s._v("#")]),s._v(" SolvingMethod")]),s._v(" "),e("p",[s._v("An enumeration.")])])}),[],!1,null,null,null);t.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{591:function(s,t,e){"use strict";e.r(t);var o=e(38),l=Object(o.a)({},(function(){var s=this,t=s.$createElement,e=s._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-do-solver-do-solver-scheduling"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-do-solver-do-solver-scheduling"}},[s._v("#")]),s._v(" hub.solver.do_solver.do_solver_scheduling")]),s._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[s._v("Domain specification")]),s._v(" "),e("skdecide-summary")],1),s._v(" "),e("h2",{attrs:{id:"solvingmethod"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#solvingmethod"}},[s._v("#")]),s._v(" SolvingMethod")]),s._v(" "),e("p",[s._v("An enumeration.")])])}),[],!1,null,null,null);t.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/80.12d34d16.js b/assets/js/80.a0a15f2f.js similarity index 90% rename from assets/js/80.12d34d16.js rename to assets/js/80.a0a15f2f.js index e56305c73e..a7942e88b2 100644 --- a/assets/js/80.12d34d16.js +++ b/assets/js/80.a0a15f2f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{596:function(t,s,o){"use strict";o.r(s);var i=o(38),e=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-do-solver-sk-to-do-binding"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-do-solver-sk-to-do-binding"}},[this._v("#")]),this._v(" hub.solver.do_solver.sk_to_do_binding")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{592:function(t,s,o){"use strict";o.r(s);var i=o(38),e=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-do-solver-sk-to-do-binding"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-do-solver-sk-to-do-binding"}},[this._v("#")]),this._v(" hub.solver.do_solver.sk_to_do_binding")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/81.f29c3c22.js b/assets/js/81.afd6e561.js similarity index 98% rename from assets/js/81.f29c3c22.js rename to assets/js/81.afd6e561.js index f431c66b4e..bc27fe7d77 100644 --- a/assets/js/81.f29c3c22.js +++ b/assets/js/81.afd6e561.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{597:function(a,t,e){"use strict";e.r(t);var n=e(38),s=Object(n.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-gphh-gphh"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-gphh-gphh"}},[a._v("#")]),a._v(" hub.solver.gphh.gphh")]),a._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[a._v("Domain specification")]),a._v(" "),e("skdecide-summary")],1),a._v(" "),e("h2",{attrs:{id:"feature-esd"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#feature-esd"}},[a._v("#")]),a._v(" feature_esd")]),a._v(" "),e("skdecide-signature",{attrs:{name:"feature_esd",sig:{params:[{name:"domain",annotation:"SchedulingDomain"},{name:"cpm"},{name:"cpm_esd"},{name:"task_id",annotation:"int"},{name:"**kwargs"}]}}}),a._v(" "),e("p",[a._v("Will only work if you store cpm results into the object. dirty trick")]),a._v(" "),e("h2",{attrs:{id:"feature-lsd"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#feature-lsd"}},[a._v("#")]),a._v(" feature_lsd")]),a._v(" "),e("skdecide-signature",{attrs:{name:"feature_lsd",sig:{params:[{name:"domain",annotation:"SchedulingDomain"},{name:"cpm"},{name:"cpm_esd"},{name:"task_id",annotation:"int"},{name:"**kwargs"}]}}}),a._v(" "),e("p",[a._v("Will only work if you store cpm results into the object. dirty trick")]),a._v(" "),e("h2",{attrs:{id:"feature-efd"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#feature-efd"}},[a._v("#")]),a._v(" feature_efd")]),a._v(" "),e("skdecide-signature",{attrs:{name:"feature_efd",sig:{params:[{name:"domain",annotation:"SchedulingDomain"},{name:"cpm"},{name:"cpm_esd"},{name:"task_id",annotation:"int"},{name:"**kwargs"}]}}}),a._v(" "),e("p",[a._v("Will only work if you store cpm results into the object. dirty trick")]),a._v(" "),e("h2",{attrs:{id:"feature-lfd"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#feature-lfd"}},[a._v("#")]),a._v(" feature_lfd")]),a._v(" "),e("skdecide-signature",{attrs:{name:"feature_lfd",sig:{params:[{name:"domain",annotation:"SchedulingDomain"},{name:"cpm"},{name:"cpm_esd"},{name:"task_id",annotation:"int"},{name:"**kwargs"}]}}}),a._v(" "),e("p",[a._v("Will only work if you store cpm results into the object. dirty trick")]),a._v(" "),e("h2",{attrs:{id:"featureenum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#featureenum"}},[a._v("#")]),a._v(" FeatureEnum")]),a._v(" "),e("p",[a._v("An enumeration.")]),a._v(" "),e("h2",{attrs:{id:"evaluationgphh"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#evaluationgphh"}},[a._v("#")]),a._v(" EvaluationGPHH")]),a._v(" "),e("p",[a._v("An enumeration.")]),a._v(" "),e("h2",{attrs:{id:"permutationdistance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#permutationdistance"}},[a._v("#")]),a._v(" PermutationDistance")]),a._v(" "),e("p",[a._v("An enumeration.")]),a._v(" "),e("h2",{attrs:{id:"poolaggregationmethod"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#poolaggregationmethod"}},[a._v("#")]),a._v(" PoolAggregationMethod")]),a._v(" "),e("p",[a._v("An enumeration.")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{593:function(a,t,e){"use strict";e.r(t);var n=e(38),s=Object(n.a)({},(function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-gphh-gphh"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-gphh-gphh"}},[a._v("#")]),a._v(" hub.solver.gphh.gphh")]),a._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[a._v("Domain specification")]),a._v(" "),e("skdecide-summary")],1),a._v(" "),e("h2",{attrs:{id:"feature-esd"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#feature-esd"}},[a._v("#")]),a._v(" feature_esd")]),a._v(" "),e("skdecide-signature",{attrs:{name:"feature_esd",sig:{params:[{name:"domain",annotation:"SchedulingDomain"},{name:"cpm"},{name:"cpm_esd"},{name:"task_id",annotation:"int"},{name:"**kwargs"}]}}}),a._v(" "),e("p",[a._v("Will only work if you store cpm results into the object. dirty trick")]),a._v(" "),e("h2",{attrs:{id:"feature-lsd"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#feature-lsd"}},[a._v("#")]),a._v(" feature_lsd")]),a._v(" "),e("skdecide-signature",{attrs:{name:"feature_lsd",sig:{params:[{name:"domain",annotation:"SchedulingDomain"},{name:"cpm"},{name:"cpm_esd"},{name:"task_id",annotation:"int"},{name:"**kwargs"}]}}}),a._v(" "),e("p",[a._v("Will only work if you store cpm results into the object. dirty trick")]),a._v(" "),e("h2",{attrs:{id:"feature-efd"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#feature-efd"}},[a._v("#")]),a._v(" feature_efd")]),a._v(" "),e("skdecide-signature",{attrs:{name:"feature_efd",sig:{params:[{name:"domain",annotation:"SchedulingDomain"},{name:"cpm"},{name:"cpm_esd"},{name:"task_id",annotation:"int"},{name:"**kwargs"}]}}}),a._v(" "),e("p",[a._v("Will only work if you store cpm results into the object. dirty trick")]),a._v(" "),e("h2",{attrs:{id:"feature-lfd"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#feature-lfd"}},[a._v("#")]),a._v(" feature_lfd")]),a._v(" "),e("skdecide-signature",{attrs:{name:"feature_lfd",sig:{params:[{name:"domain",annotation:"SchedulingDomain"},{name:"cpm"},{name:"cpm_esd"},{name:"task_id",annotation:"int"},{name:"**kwargs"}]}}}),a._v(" "),e("p",[a._v("Will only work if you store cpm results into the object. dirty trick")]),a._v(" "),e("h2",{attrs:{id:"featureenum"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#featureenum"}},[a._v("#")]),a._v(" FeatureEnum")]),a._v(" "),e("p",[a._v("An enumeration.")]),a._v(" "),e("h2",{attrs:{id:"evaluationgphh"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#evaluationgphh"}},[a._v("#")]),a._v(" EvaluationGPHH")]),a._v(" "),e("p",[a._v("An enumeration.")]),a._v(" "),e("h2",{attrs:{id:"permutationdistance"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#permutationdistance"}},[a._v("#")]),a._v(" PermutationDistance")]),a._v(" "),e("p",[a._v("An enumeration.")]),a._v(" "),e("h2",{attrs:{id:"poolaggregationmethod"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#poolaggregationmethod"}},[a._v("#")]),a._v(" PoolAggregationMethod")]),a._v(" "),e("p",[a._v("An enumeration.")])],1)}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/82.a8b0a8d3.js b/assets/js/82.e2f4ee2e.js similarity index 90% rename from assets/js/82.a8b0a8d3.js rename to assets/js/82.e2f4ee2e.js index c1dfa5eb14..5c02ef8f05 100644 --- a/assets/js/82.a8b0a8d3.js +++ b/assets/js/82.e2f4ee2e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{598:function(t,s,e){"use strict";e.r(s);var r=e(38),o=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-graph-explorer-dfsexploration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-graph-explorer-dfsexploration"}},[this._v("#")]),this._v(" hub.solver.graph_explorer.DFSExploration")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{594:function(t,s,e){"use strict";e.r(s);var r=e(38),o=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-graph-explorer-dfsexploration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-graph-explorer-dfsexploration"}},[this._v("#")]),this._v(" hub.solver.graph_explorer.DFSExploration")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/83.c689a157.js b/assets/js/83.d1c4d628.js similarity index 91% rename from assets/js/83.c689a157.js rename to assets/js/83.d1c4d628.js index af976876a9..8cb1589d54 100644 --- a/assets/js/83.c689a157.js +++ b/assets/js/83.d1c4d628.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{599:function(t,s,e){"use strict";e.r(s);var r=e(38),i=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-graph-explorer-dfs-uncertain-exploration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-graph-explorer-dfs-uncertain-exploration"}},[this._v("#")]),this._v(" hub.solver.graph_explorer.DFS_Uncertain_Exploration")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{595:function(t,s,e){"use strict";e.r(s);var r=e(38),i=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-graph-explorer-dfs-uncertain-exploration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-graph-explorer-dfs-uncertain-exploration"}},[this._v("#")]),this._v(" hub.solver.graph_explorer.DFS_Uncertain_Exploration")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/84.1f2a9105.js b/assets/js/84.2a2a7a1f.js similarity index 93% rename from assets/js/84.1f2a9105.js rename to assets/js/84.2a2a7a1f.js index 6eead4e7d8..3edbd421cc 100644 --- a/assets/js/84.1f2a9105.js +++ b/assets/js/84.2a2a7a1f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{600:function(a,e,t){"use strict";t.r(e);var s=t(38),r=Object(s.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"hub-solver-graph-explorer-fullspaceexploration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-graph-explorer-fullspaceexploration"}},[a._v("#")]),a._v(" hub.solver.graph_explorer.FullSpaceExploration")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("Domain specification")]),a._v(" "),t("skdecide-summary")],1),a._v(" "),t("h2",{attrs:{id:"reachable-states"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reachable-states"}},[a._v("#")]),a._v(" reachable_states")]),a._v(" "),t("skdecide-signature",{attrs:{name:"reachable_states",sig:{params:[{name:"self"},{name:"s0",annotation:"Any"}]}}}),a._v(" "),t("p",[a._v("Computes all states reachable from s0.")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{596:function(a,e,t){"use strict";t.r(e);var s=t(38),r=Object(s.a)({},(function(){var a=this,e=a.$createElement,t=a._self._c||e;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"hub-solver-graph-explorer-fullspaceexploration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-graph-explorer-fullspaceexploration"}},[a._v("#")]),a._v(" hub.solver.graph_explorer.FullSpaceExploration")]),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("Domain specification")]),a._v(" "),t("skdecide-summary")],1),a._v(" "),t("h2",{attrs:{id:"reachable-states"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reachable-states"}},[a._v("#")]),a._v(" reachable_states")]),a._v(" "),t("skdecide-signature",{attrs:{name:"reachable_states",sig:{params:[{name:"self"},{name:"s0",annotation:"Any"}]}}}),a._v(" "),t("p",[a._v("Computes all states reachable from s0.")])],1)}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/85.45b8209e.js b/assets/js/85.bc9b148e.js similarity index 90% rename from assets/js/85.45b8209e.js rename to assets/js/85.bc9b148e.js index 38db84e6c8..15c9d4aec2 100644 --- a/assets/js/85.45b8209e.js +++ b/assets/js/85.bc9b148e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{601:function(t,s,r){"use strict";r.r(s);var a=r(38),e=Object(a.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-graph-explorer-graphdomain"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-graph-explorer-graphdomain"}},[this._v("#")]),this._v(" hub.solver.graph_explorer.GraphDomain")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{597:function(t,s,r){"use strict";r.r(s);var a=r(38),e=Object(a.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-graph-explorer-graphdomain"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-graph-explorer-graphdomain"}},[this._v("#")]),this._v(" hub.solver.graph_explorer.GraphDomain")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/86.6aabc323.js b/assets/js/86.eee4f1ba.js similarity index 91% rename from assets/js/86.6aabc323.js rename to assets/js/86.eee4f1ba.js index dddf3c9f5f..2cbf8d8e98 100644 --- a/assets/js/86.6aabc323.js +++ b/assets/js/86.eee4f1ba.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{602:function(t,s,r){"use strict";r.r(s);var e=r(38),a=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-graph-explorer-graphexploration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-graph-explorer-graphexploration"}},[this._v("#")]),this._v(" hub.solver.graph_explorer.GraphExploration")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{598:function(t,s,r){"use strict";r.r(s);var e=r(38),a=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-graph-explorer-graphexploration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-graph-explorer-graphexploration"}},[this._v("#")]),this._v(" hub.solver.graph_explorer.GraphExploration")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/87.b5140c2e.js b/assets/js/87.a521f469.js similarity index 90% rename from assets/js/87.b5140c2e.js rename to assets/js/87.a521f469.js index 0a77ecd48c..15315dd93b 100644 --- a/assets/js/87.b5140c2e.js +++ b/assets/js/87.a521f469.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{603:function(t,s,a){"use strict";a.r(s);var i=a(38),o=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-ilaostar-ilaostar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-ilaostar-ilaostar"}},[this._v("#")]),this._v(" hub.solver.ilaostar.ilaostar")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{599:function(t,s,a){"use strict";a.r(s);var i=a(38),o=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-ilaostar-ilaostar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-ilaostar-ilaostar"}},[this._v("#")]),this._v(" hub.solver.ilaostar.ilaostar")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/88.35569a43.js b/assets/js/88.bf35358e.js similarity index 89% rename from assets/js/88.35569a43.js rename to assets/js/88.bf35358e.js index f4a2f38102..2015ebca34 100644 --- a/assets/js/88.35569a43.js +++ b/assets/js/88.bf35358e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{604:function(t,s,i){"use strict";i.r(s);var e=i(38),a=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-iw-iw"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-iw-iw"}},[this._v("#")]),this._v(" hub.solver.iw.iw")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{600:function(t,s,i){"use strict";i.r(s);var e=i(38),a=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-iw-iw"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-iw-iw"}},[this._v("#")]),this._v(" hub.solver.iw.iw")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/89.cbad12ec.js b/assets/js/89.e2dfc1fe.js similarity index 90% rename from assets/js/89.cbad12ec.js rename to assets/js/89.e2dfc1fe.js index 83a8539d2e..964dbbe7e5 100644 --- a/assets/js/89.cbad12ec.js +++ b/assets/js/89.e2dfc1fe.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{605:function(t,s,a){"use strict";a.r(s);var i=a(38),l=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-lazy-astar-lazy-astar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-lazy-astar-lazy-astar"}},[this._v("#")]),this._v(" hub.solver.lazy_astar.lazy_astar")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{601:function(t,s,a){"use strict";a.r(s);var i=a(38),l=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-lazy-astar-lazy-astar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-lazy-astar-lazy-astar"}},[this._v("#")]),this._v(" hub.solver.lazy_astar.lazy_astar")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/90.8e043d28.js b/assets/js/90.ae0f6209.js similarity index 90% rename from assets/js/90.8e043d28.js rename to assets/js/90.ae0f6209.js index 56e83c7fa6..37dfd3a552 100644 --- a/assets/js/90.8e043d28.js +++ b/assets/js/90.ae0f6209.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{606:function(t,s,a){"use strict";a.r(s);var r=a(38),i=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-lrtastar-lrtastar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-lrtastar-lrtastar"}},[this._v("#")]),this._v(" hub.solver.lrtastar.lrtastar")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{602:function(t,s,a){"use strict";a.r(s);var r=a(38),i=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-lrtastar-lrtastar"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-lrtastar-lrtastar"}},[this._v("#")]),this._v(" hub.solver.lrtastar.lrtastar")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/91.eaeb2ca0.js b/assets/js/91.e1b23282.js similarity index 90% rename from assets/js/91.eaeb2ca0.js rename to assets/js/91.e1b23282.js index 1a3c44f05d..456280787c 100644 --- a/assets/js/91.eaeb2ca0.js +++ b/assets/js/91.e1b23282.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{607:function(t,s,i){"use strict";i.r(s);var l=i(38),r=Object(l.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-lrtdp-lrtdp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-lrtdp-lrtdp"}},[this._v("#")]),this._v(" hub.solver.lrtdp.lrtdp")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{603:function(t,s,i){"use strict";i.r(s);var l=i(38),r=Object(l.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-lrtdp-lrtdp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-lrtdp-lrtdp"}},[this._v("#")]),this._v(" hub.solver.lrtdp.lrtdp")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/92.27ea0054.js b/assets/js/92.cc587544.js similarity index 90% rename from assets/js/92.27ea0054.js rename to assets/js/92.cc587544.js index 7564ae15c1..88b2b17e99 100644 --- a/assets/js/92.27ea0054.js +++ b/assets/js/92.cc587544.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{608:function(t,s,a){"use strict";a.r(s);var i=a(38),e=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-mahd-mahd"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-mahd-mahd"}},[this._v("#")]),this._v(" hub.solver.mahd.mahd")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{604:function(t,s,a){"use strict";a.r(s);var i=a(38),e=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-mahd-mahd"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-mahd-mahd"}},[this._v("#")]),this._v(" hub.solver.mahd.mahd")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/93.6ce172af.js b/assets/js/93.a1adaaca.js similarity index 90% rename from assets/js/93.6ce172af.js rename to assets/js/93.a1adaaca.js index b8b685f4c2..3063e16fcc 100644 --- a/assets/js/93.6ce172af.js +++ b/assets/js/93.a1adaaca.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{609:function(t,s,a){"use strict";a.r(s);var i=a(38),r=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-martdp-martdp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-martdp-martdp"}},[this._v("#")]),this._v(" hub.solver.martdp.martdp")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{605:function(t,s,a){"use strict";a.r(s);var i=a(38),r=Object(i.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-martdp-martdp"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-martdp-martdp"}},[this._v("#")]),this._v(" hub.solver.martdp.martdp")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/94.9183f586.js b/assets/js/94.c652a9a7.js similarity index 90% rename from assets/js/94.9183f586.js rename to assets/js/94.c652a9a7.js index 78fc157f6f..fd5a4b63d1 100644 --- a/assets/js/94.9183f586.js +++ b/assets/js/94.c652a9a7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{610:function(t,s,i){"use strict";i.r(s);var e=i(38),a=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-maxent-irl-maxent-irl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-maxent-irl-maxent-irl"}},[this._v("#")]),this._v(" hub.solver.maxent_irl.maxent_irl")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{606:function(t,s,i){"use strict";i.r(s);var e=i(38),a=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-maxent-irl-maxent-irl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-maxent-irl-maxent-irl"}},[this._v("#")]),this._v(" hub.solver.maxent_irl.maxent_irl")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/95.7ad26ea5.js b/assets/js/95.41b37656.js similarity index 90% rename from assets/js/95.7ad26ea5.js rename to assets/js/95.41b37656.js index e0ead5cb42..d051b13fd1 100644 --- a/assets/js/95.7ad26ea5.js +++ b/assets/js/95.41b37656.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{611:function(t,s,i){"use strict";i.r(s);var e=i(38),c=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-mcts-mcts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-mcts-mcts"}},[this._v("#")]),this._v(" hub.solver.mcts.mcts")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{607:function(t,s,i){"use strict";i.r(s);var e=i(38),c=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-mcts-mcts"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-mcts-mcts"}},[this._v("#")]),this._v(" hub.solver.mcts.mcts")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=c.exports}}]); \ No newline at end of file diff --git a/assets/js/96.7ec3d5f8.js b/assets/js/96.58f8cf4d.js similarity index 90% rename from assets/js/96.7ec3d5f8.js rename to assets/js/96.58f8cf4d.js index 3e6d72d124..27fb83e3c7 100644 --- a/assets/js/96.7ec3d5f8.js +++ b/assets/js/96.58f8cf4d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{612:function(t,s,i){"use strict";i.r(s);var e=i(38),a=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-meta-policy-meta-policies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-meta-policy-meta-policies"}},[this._v("#")]),this._v(" hub.solver.meta_policy.meta_policies")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{608:function(t,s,i){"use strict";i.r(s);var e=i(38),a=Object(e.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-meta-policy-meta-policies"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-meta-policy-meta-policies"}},[this._v("#")]),this._v(" hub.solver.meta_policy.meta_policies")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/97.19533b24.js b/assets/js/97.502f5e4c.js similarity index 92% rename from assets/js/97.19533b24.js rename to assets/js/97.502f5e4c.js index bbb99c5009..8fd27f12e3 100644 --- a/assets/js/97.19533b24.js +++ b/assets/js/97.502f5e4c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{613:function(e,t,i){"use strict";i.r(t);var s=i(38),l=Object(s.a)({},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[i("h1",{attrs:{id:"hub-solver-pile-policy-pile-policy"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-pile-policy-pile-policy"}},[e._v("#")]),e._v(" hub.solver.pile_policy.pile_policy")]),e._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),i("skdecide-summary")],1),e._v(" "),i("h2",{attrs:{id:"greedychoice"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#greedychoice"}},[e._v("#")]),e._v(" GreedyChoice")]),e._v(" "),i("p",[e._v("An enumeration.")])])}),[],!1,null,null,null);t.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{609:function(e,t,i){"use strict";i.r(t);var s=i(38),l=Object(s.a)({},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[i("h1",{attrs:{id:"hub-solver-pile-policy-pile-policy"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-pile-policy-pile-policy"}},[e._v("#")]),e._v(" hub.solver.pile_policy.pile_policy")]),e._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[e._v("Domain specification")]),e._v(" "),i("skdecide-summary")],1),e._v(" "),i("h2",{attrs:{id:"greedychoice"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#greedychoice"}},[e._v("#")]),e._v(" GreedyChoice")]),e._v(" "),i("p",[e._v("An enumeration.")])])}),[],!1,null,null,null);t.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/98.b3c3d224.js b/assets/js/98.ff2e0270.js similarity index 91% rename from assets/js/98.b3c3d224.js rename to assets/js/98.ff2e0270.js index 1ee887273f..019248e559 100644 --- a/assets/js/98.b3c3d224.js +++ b/assets/js/98.ff2e0270.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{614:function(t,s,a){"use strict";a.r(s);var o=a(38),i=Object(o.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-policy-evaluators-policy-evaluator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-policy-evaluators-policy-evaluator"}},[this._v("#")]),this._v(" hub.solver.policy_evaluators.policy_evaluator")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{610:function(t,s,a){"use strict";a.r(s);var o=a(38),i=Object(o.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"hub-solver-policy-evaluators-policy-evaluator"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-policy-evaluators-policy-evaluator"}},[this._v("#")]),this._v(" hub.solver.policy_evaluators.policy_evaluator")]),this._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[this._v("Domain specification")]),this._v(" "),s("skdecide-summary")],1)])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/99.875ee937.js b/assets/js/99.8345bddc.js similarity index 94% rename from assets/js/99.875ee937.js rename to assets/js/99.8345bddc.js index c639a3949c..e44441bff2 100644 --- a/assets/js/99.875ee937.js +++ b/assets/js/99.8345bddc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{615:function(t,i,e){"use strict";e.r(i);var s=e(38),a=Object(s.a)({},(function(){var t=this,i=t.$createElement,e=t._self._c||i;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-pomcp-pomcp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-pomcp-pomcp"}},[t._v("#")]),t._v(" hub.solver.pomcp.pomcp")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"get-probability"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-probability"}},[t._v("#")]),t._v(" get_probability")]),t._v(" "),e("skdecide-signature",{attrs:{name:"get_probability",sig:{params:[{name:"distribution"},{name:"element"},{name:"n",default:"100"}]}}}),t._v(" "),e("p",[t._v("Utility function to get the probability of a specific element from a scikit-decide distribution\n(based on sampling if this distribution is not a DiscreteDistribution).")])],1)}),[],!1,null,null,null);i.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{611:function(t,i,e){"use strict";e.r(i);var s=e(38),a=Object(s.a)({},(function(){var t=this,i=t.$createElement,e=t._self._c||i;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"hub-solver-pomcp-pomcp"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#hub-solver-pomcp-pomcp"}},[t._v("#")]),t._v(" hub.solver.pomcp.pomcp")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Domain specification")]),t._v(" "),e("skdecide-summary")],1),t._v(" "),e("h2",{attrs:{id:"get-probability"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#get-probability"}},[t._v("#")]),t._v(" get_probability")]),t._v(" "),e("skdecide-signature",{attrs:{name:"get_probability",sig:{params:[{name:"distribution"},{name:"element"},{name:"n",default:"100"}]}}}),t._v(" "),e("p",[t._v("Utility function to get the probability of a specific element from a scikit-decide distribution\n(based on sampling if this distribution is not a DiscreteDistribution).")])],1)}),[],!1,null,null,null);i.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/app.627eed30.js b/assets/js/app.e12a7118.js similarity index 83% rename from assets/js/app.627eed30.js rename to assets/js/app.e12a7118.js index 8eb68fffd4..c3e1e95f44 100644 --- a/assets/js/app.627eed30.js +++ b/assets/js/app.e12a7118.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var n,a,o=t[0],l=t[1],u=t[2],d=0,h=[];d=0&&Math.floor(t)===t&&isFinite(e)}function p(e){return s(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function f(e){return null==e?"":Array.isArray(e)||c(e)&&e.toString===u?JSON.stringify(e,null,2):String(e)}function m(e){var t=parseFloat(e);return isNaN(t)?e:t}function v(e,t){for(var i=Object.create(null),n=e.split(","),r=0;r-1)return e.splice(i,1)}}var b=Object.prototype.hasOwnProperty;function y(e,t){return b.call(e,t)}function x(e){var t=Object.create(null);return function(i){return t[i]||(t[i]=e(i))}}var k=/-(\w)/g,w=x((function(e){return e.replace(k,(function(e,t){return t?t.toUpperCase():""}))})),C=x((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),S=/\B([A-Z])/g,O=x((function(e){return e.replace(S,"-$1").toLowerCase()}));var D=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function i(i){var n=arguments.length;return n?n>1?e.apply(t,arguments):e.call(t,i):e.call(t)}return i._length=e.length,i};function E(e,t){t=t||0;for(var i=e.length-t,n=new Array(i);i--;)n[i]=e[i+t];return n}function T(e,t){for(var i in t)e[i]=t[i];return e}function $(e){for(var t={},i=0;i0,Z=Y&&Y.indexOf("edge/")>0,Q=(Y&&Y.indexOf("android"),Y&&/iphone|ipad|ipod|ios/.test(Y)||"ios"===G),J=(Y&&/chrome\/\d+/.test(Y),Y&&/phantomjs/.test(Y),Y&&Y.match(/firefox\/(\d+)/)),ee={}.watch,te=!1;if(q)try{var ie={};Object.defineProperty(ie,"passive",{get:function(){te=!0}}),window.addEventListener("test-passive",null,ie)}catch(e){}var ne=function(){return void 0===H&&(H=!q&&!U&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),H},re=q&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function se(e){return"function"==typeof e&&/native code/.test(e.toString())}var ae,oe="undefined"!=typeof Symbol&&se(Symbol)&&"undefined"!=typeof Reflect&&se(Reflect.ownKeys);ae="undefined"!=typeof Set&&se(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var le=P,ue=0,ce=function(){this.id=ue++,this.subs=[]};ce.prototype.addSub=function(e){this.subs.push(e)},ce.prototype.removeSub=function(e){_(this.subs,e)},ce.prototype.depend=function(){ce.target&&ce.target.addDep(this)},ce.prototype.notify=function(){var e=this.subs.slice();for(var t=0,i=e.length;t-1)if(s&&!y(r,"default"))a=!1;else if(""===a||a===O(e)){var l=Be(String,r.type);(l<0||o0&&(dt((l=e(l,(i||"")+"_"+n))[0])&&dt(c)&&(d[u]=ge(c.text+l[0].text),l.shift()),d.push.apply(d,l)):o(l)?dt(c)?d[u]=ge(c.text+l):""!==l&&d.push(ge(l)):dt(l)&&dt(c)?d[u]=ge(c.text+l.text):(a(t._isVList)&&s(l.tag)&&r(l.key)&&s(i)&&(l.key="__vlist"+i+"_"+n+"__"),d.push(l)));return d}(e):void 0}function dt(e){return s(e)&&s(e.text)&&!1===e.isComment}function ht(e,t){if(e){for(var i=Object.create(null),n=oe?Reflect.ownKeys(e):Object.keys(e),r=0;r0,a=e?!!e.$stable:!s,o=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(a&&i&&i!==n&&o===i.$key&&!s&&!i.$hasNormal)return i;for(var l in r={},e)e[l]&&"$"!==l[0]&&(r[l]=gt(t,l,e[l]))}else r={};for(var u in t)u in r||(r[u]=_t(t,u));return e&&Object.isExtensible(e)&&(e._normalized=r),R(r,"$stable",a),R(r,"$key",o),R(r,"$hasNormal",s),r}function gt(e,t,i){var n=function(){var e=arguments.length?i.apply(null,arguments):i({}),t=(e=e&&"object"==typeof e&&!Array.isArray(e)?[e]:ct(e))&&e[0];return e&&(!t||1===e.length&&t.isComment&&!mt(t))?void 0:e};return i.proxy&&Object.defineProperty(e,t,{get:n,enumerable:!0,configurable:!0}),n}function _t(e,t){return function(){return e[t]}}function bt(e,t){var i,n,r,a,o;if(Array.isArray(e)||"string"==typeof e)for(i=new Array(e.length),n=0,r=e.length;ndocument.createEvent("Event").timeStamp&&(li=function(){return ui.now()})}function ci(){var e,t;for(oi=li(),si=!0,ti.sort((function(e,t){return e.id-t.id})),ai=0;aiai&&ti[i].id>e.id;)i--;ti.splice(i+1,0,e)}else ti.push(e);ri||(ri=!0,it(ci))}}(this)},hi.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||l(e)||this.deep){var t=this.value;if(this.value=e,this.user){var i='callback for watcher "'+this.expression+'"';We(this.cb,this.vm,[e,t],this.vm,i)}else this.cb.call(this.vm,e,t)}}},hi.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},hi.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},hi.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||_(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var pi={enumerable:!0,configurable:!0,get:P,set:P};function fi(e,t,i){pi.get=function(){return this[t][i]},pi.set=function(e){this[t][i]=e},Object.defineProperty(e,i,pi)}function mi(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var i=e.$options.propsData||{},n=e._props={},r=e.$options._propKeys=[];e.$parent&&we(!1);var s=function(s){r.push(s);var a=Fe(s,t,i,e);Oe(n,s,a),s in e||fi(e,"_props",s)};for(var a in t)s(a);we(!0)}(e,t.props),t.methods&&function(e,t){e.$options.props;for(var i in t)e[i]="function"!=typeof t[i]?P:D(t[i],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;c(t=e._data="function"==typeof t?function(e,t){he();try{return e.call(t,t)}catch(e){return He(e,t,"data()"),{}}finally{pe()}}(t,e):t||{})||(t={});var i=Object.keys(t),n=e.$options.props,r=(e.$options.methods,i.length);for(;r--;){var s=i[r];0,n&&y(n,s)||(a=void 0,36!==(a=(s+"").charCodeAt(0))&&95!==a&&fi(e,"_data",s))}var a;Se(t,!0)}(e):Se(e._data={},!0),t.computed&&function(e,t){var i=e._computedWatchers=Object.create(null),n=ne();for(var r in t){var s=t[r],a="function"==typeof s?s:s.get;0,n||(i[r]=new hi(e,a||P,P,vi)),r in e||gi(e,r,s)}}(e,t.computed),t.watch&&t.watch!==ee&&function(e,t){for(var i in t){var n=t[i];if(Array.isArray(n))for(var r=0;r-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!d(e)&&e.test(t)}function Di(e,t){var i=e.cache,n=e.keys,r=e._vnode;for(var s in i){var a=i[s];if(a){var o=a.name;o&&!t(o)&&Ei(i,s,n,r)}}}function Ei(e,t,i,n){var r=e[t];!r||n&&r.tag===n.tag||r.componentInstance.$destroy(),e[t]=null,_(i,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=xi++,t._isVue=!0,e&&e._isComponent?function(e,t){var i=e.$options=Object.create(e.constructor.options),n=t._parentVnode;i.parent=t.parent,i._parentVnode=n;var r=n.componentOptions;i.propsData=r.propsData,i._parentListeners=r.listeners,i._renderChildren=r.children,i._componentTag=r.tag,t.render&&(i.render=t.render,i.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Ne(ki(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,i=t.parent;if(i&&!t.abstract){for(;i.$options.abstract&&i.$parent;)i=i.$parent;i.$children.push(e)}e.$parent=i,e.$root=i?i.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Kt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,i=e.$vnode=t._parentVnode,r=i&&i.context;e.$slots=pt(t._renderChildren,r),e.$scopedSlots=n,e._c=function(t,i,n,r){return Rt(e,t,i,n,r,!1)},e.$createElement=function(t,i,n,r){return Rt(e,t,i,n,r,!0)};var s=i&&i.data;Oe(e,"$attrs",s&&s.attrs||n,null,!0),Oe(e,"$listeners",t._parentListeners||n,null,!0)}(t),ei(t,"beforeCreate"),function(e){var t=ht(e.$options.inject,e);t&&(we(!1),Object.keys(t).forEach((function(i){Oe(e,i,t[i])})),we(!0))}(t),mi(t),function(e){var t=e.$options.provide;t&&(e._provided="function"==typeof t?t.call(e):t)}(t),ei(t,"created"),t.$options.el&&t.$mount(t.$options.el)}}(wi),function(e){var t={get:function(){return this._data}},i={get:function(){return this._props}};Object.defineProperty(e.prototype,"$data",t),Object.defineProperty(e.prototype,"$props",i),e.prototype.$set=De,e.prototype.$delete=Ee,e.prototype.$watch=function(e,t,i){if(c(t))return yi(this,e,t,i);(i=i||{}).user=!0;var n=new hi(this,e,t,i);if(i.immediate){var r='callback for immediate watcher "'+n.expression+'"';he(),We(t,this,[n.value],this,r),pe()}return function(){n.teardown()}}}(wi),function(e){var t=/^hook:/;e.prototype.$on=function(e,i){var n=this;if(Array.isArray(e))for(var r=0,s=e.length;r1?E(i):i;for(var n=E(arguments,1),r='event handler for "'+e+'"',s=0,a=i.length;sparseInt(this.max)&&Ei(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Ei(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){Di(e,(function(e){return Oi(t,e)}))})),this.$watch("exclude",(function(t){Di(e,(function(e){return!Oi(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=qt(e),i=t&&t.componentOptions;if(i){var n=Si(i),r=this.include,s=this.exclude;if(r&&(!n||!Oi(r,n))||s&&n&&Oi(s,n))return t;var a=this.cache,o=this.keys,l=null==t.key?i.Ctor.cid+(i.tag?"::"+i.tag:""):t.key;a[l]?(t.componentInstance=a[l].componentInstance,_(o,l),o.push(l)):(this.vnodeToCache=t,this.keyToCache=l),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return V}};Object.defineProperty(e,"config",t),e.util={warn:le,extend:T,mergeOptions:Ne,defineReactive:Oe},e.set=De,e.delete=Ee,e.nextTick=it,e.observable=function(e){return Se(e),e},e.options=Object.create(null),L.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,T(e.options.components,$i),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var i=E(arguments,1);return i.unshift(this),"function"==typeof e.install?e.install.apply(e,i):"function"==typeof e&&e.apply(null,i),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Ne(this.options,e),this}}(e),Ci(e),function(e){L.forEach((function(t){e[t]=function(e,i){return i?("component"===t&&c(i)&&(i.name=i.name||e,i=this.options._base.extend(i)),"directive"===t&&"function"==typeof i&&(i={bind:i,update:i}),this.options[t+"s"][e]=i,i):this.options[t+"s"][e]}}))}(e)}(wi),Object.defineProperty(wi.prototype,"$isServer",{get:ne}),Object.defineProperty(wi.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(wi,"FunctionalRenderContext",{value:It}),wi.version="2.6.14";var Pi=v("style,class"),ji=v("input,textarea,option,select,progress"),Mi=v("contenteditable,draggable,spellcheck"),Ii=v("events,caret,typing,plaintext-only"),Ai=v("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Ni="http://www.w3.org/1999/xlink",Li=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Fi=function(e){return Li(e)?e.slice(6,e.length):""},Vi=function(e){return null==e||!1===e};function zi(e){for(var t=e.data,i=e,n=e;s(n.componentInstance);)(n=n.componentInstance._vnode)&&n.data&&(t=Ri(n.data,t));for(;s(i=i.parent);)i&&i.data&&(t=Ri(t,i.data));return function(e,t){if(s(e)||s(t))return Bi(e,Hi(t));return""}(t.staticClass,t.class)}function Ri(e,t){return{staticClass:Bi(e.staticClass,t.staticClass),class:s(e.class)?[e.class,t.class]:t.class}}function Bi(e,t){return e?t?e+" "+t:e:t||""}function Hi(e){return Array.isArray(e)?function(e){for(var t,i="",n=0,r=e.length;n-1?pn(e,t,i):Ai(t)?Vi(i)?e.removeAttribute(t):(i="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,i)):Mi(t)?e.setAttribute(t,function(e,t){return Vi(t)||"false"===t?"false":"contenteditable"===e&&Ii(t)?t:"true"}(t,i)):Li(t)?Vi(i)?e.removeAttributeNS(Ni,Fi(t)):e.setAttributeNS(Ni,t,i):pn(e,t,i)}function pn(e,t,i){if(Vi(i))e.removeAttribute(t);else{if(K&&!X&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==i&&!e.__ieph){var n=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",n)};e.addEventListener("input",n),e.__ieph=!0}e.setAttribute(t,i)}}var fn={create:dn,update:dn};function mn(e,t){var i=t.elm,n=t.data,a=e.data;if(!(r(n.staticClass)&&r(n.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var o=zi(t),l=i._transitionClasses;s(l)&&(o=Bi(o,Hi(l))),o!==i._prevClass&&(i.setAttribute("class",o),i._prevClass=o)}}var vn,gn={create:mn,update:mn};function _n(e,t,i){var n=vn;return function r(){var s=t.apply(null,arguments);null!==s&&xn(e,r,i,n)}}var bn=Ye&&!(J&&Number(J[1])<=53);function yn(e,t,i,n){if(bn){var r=oi,s=t;t=s._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=r||e.timeStamp<=0||e.target.ownerDocument!==document)return s.apply(this,arguments)}}vn.addEventListener(e,t,te?{capture:i,passive:n}:i)}function xn(e,t,i,n){(n||vn).removeEventListener(e,t._wrapper||t,i)}function kn(e,t){if(!r(e.data.on)||!r(t.data.on)){var i=t.data.on||{},n=e.data.on||{};vn=t.elm,function(e){if(s(e.__r)){var t=K?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}s(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(i),ot(i,n,yn,xn,_n,t.context),vn=void 0}}var wn,Cn={create:kn,update:kn};function Sn(e,t){if(!r(e.data.domProps)||!r(t.data.domProps)){var i,n,a=t.elm,o=e.data.domProps||{},l=t.data.domProps||{};for(i in s(l.__ob__)&&(l=t.data.domProps=T({},l)),o)i in l||(a[i]="");for(i in l){if(n=l[i],"textContent"===i||"innerHTML"===i){if(t.children&&(t.children.length=0),n===o[i])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===i&&"PROGRESS"!==a.tagName){a._value=n;var u=r(n)?"":String(n);On(a,u)&&(a.value=u)}else if("innerHTML"===i&&Ui(a.tagName)&&r(a.innerHTML)){(wn=wn||document.createElement("div")).innerHTML=""+n+"";for(var c=wn.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;c.firstChild;)a.appendChild(c.firstChild)}else if(n!==o[i])try{a[i]=n}catch(e){}}}}function On(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var i=!0;try{i=document.activeElement!==e}catch(e){}return i&&e.value!==t}(e,t)||function(e,t){var i=e.value,n=e._vModifiers;if(s(n)){if(n.number)return m(i)!==m(t);if(n.trim)return i.trim()!==t.trim()}return i!==t}(e,t))}var Dn={create:Sn,update:Sn},En=x((function(e){var t={},i=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var n=e.split(i);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}));function Tn(e){var t=$n(e.style);return e.staticStyle?T(e.staticStyle,t):t}function $n(e){return Array.isArray(e)?$(e):"string"==typeof e?En(e):e}var Pn,jn=/^--/,Mn=/\s*!important$/,In=function(e,t,i){if(jn.test(t))e.style.setProperty(t,i);else if(Mn.test(i))e.style.setProperty(O(t),i.replace(Mn,""),"important");else{var n=Nn(t);if(Array.isArray(i))for(var r=0,s=i.length;r-1?t.split(Vn).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var i=" "+(e.getAttribute("class")||"")+" ";i.indexOf(" "+t+" ")<0&&e.setAttribute("class",(i+t).trim())}}function Rn(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(Vn).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var i=" "+(e.getAttribute("class")||"")+" ",n=" "+t+" ";i.indexOf(n)>=0;)i=i.replace(n," ");(i=i.trim())?e.setAttribute("class",i):e.removeAttribute("class")}}function Bn(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&T(t,Hn(e.name||"v")),T(t,e),t}return"string"==typeof e?Hn(e):void 0}}var Hn=x((function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}})),Wn=q&&!X,qn="transition",Un="transitionend",Gn="animation",Yn="animationend";Wn&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(qn="WebkitTransition",Un="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Gn="WebkitAnimation",Yn="webkitAnimationEnd"));var Kn=q?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Xn(e){Kn((function(){Kn(e)}))}function Zn(e,t){var i=e._transitionClasses||(e._transitionClasses=[]);i.indexOf(t)<0&&(i.push(t),zn(e,t))}function Qn(e,t){e._transitionClasses&&_(e._transitionClasses,t),Rn(e,t)}function Jn(e,t,i){var n=tr(e,t),r=n.type,s=n.timeout,a=n.propCount;if(!r)return i();var o="transition"===r?Un:Yn,l=0,u=function(){e.removeEventListener(o,c),i()},c=function(t){t.target===e&&++l>=a&&u()};setTimeout((function(){l0&&(i="transition",c=a,d=s.length):"animation"===t?u>0&&(i="animation",c=u,d=l.length):d=(i=(c=Math.max(a,u))>0?a>u?"transition":"animation":null)?"transition"===i?s.length:l.length:0,{type:i,timeout:c,propCount:d,hasTransform:"transition"===i&&er.test(n[qn+"Property"])}}function ir(e,t){for(;e.length1}function lr(e,t){!0!==t.data.show&&rr(t)}var ur=function(e){var t,i,n={},l=e.modules,u=e.nodeOps;for(t=0;tf?b(e,r(i[g+1])?null:i[g+1].elm,i,p,g,n):p>g&&x(t,h,f)}(h,v,g,i,c):s(g)?(s(e.text)&&u.setTextContent(h,""),b(h,null,g,0,g.length-1,i)):s(v)?x(v,0,v.length-1):s(e.text)&&u.setTextContent(h,""):e.text!==t.text&&u.setTextContent(h,t.text),s(f)&&s(p=f.hook)&&s(p=p.postpatch)&&p(e,t)}}}function S(e,t,i){if(a(i)&&s(e.parent))e.parent.data.pendingInsert=t;else for(var n=0;n-1,a.selected!==s&&(a.selected=s);else if(I(fr(a),n))return void(e.selectedIndex!==o&&(e.selectedIndex=o));r||(e.selectedIndex=-1)}}function pr(e,t){return t.every((function(t){return!I(t,e)}))}function fr(e){return"_value"in e?e._value:e.value}function mr(e){e.target.composing=!0}function vr(e){e.target.composing&&(e.target.composing=!1,gr(e.target,"input"))}function gr(e,t){var i=document.createEvent("HTMLEvents");i.initEvent(t,!0,!0),e.dispatchEvent(i)}function _r(e){return!e.componentInstance||e.data&&e.data.transition?e:_r(e.componentInstance._vnode)}var br={model:cr,show:{bind:function(e,t,i){var n=t.value,r=(i=_r(i)).data&&i.data.transition,s=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;n&&r?(i.data.show=!0,rr(i,(function(){e.style.display=s}))):e.style.display=n?s:"none"},update:function(e,t,i){var n=t.value;!n!=!t.oldValue&&((i=_r(i)).data&&i.data.transition?(i.data.show=!0,n?rr(i,(function(){e.style.display=e.__vOriginalDisplay})):sr(i,(function(){e.style.display="none"}))):e.style.display=n?e.__vOriginalDisplay:"none")},unbind:function(e,t,i,n,r){r||(e.style.display=e.__vOriginalDisplay)}}},yr={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function xr(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?xr(qt(t.children)):e}function kr(e){var t={},i=e.$options;for(var n in i.propsData)t[n]=e[n];var r=i._parentListeners;for(var s in r)t[w(s)]=r[s];return t}function wr(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Cr=function(e){return e.tag||mt(e)},Sr=function(e){return"show"===e.name},Or={name:"transition",props:yr,abstract:!0,render:function(e){var t=this,i=this.$slots.default;if(i&&(i=i.filter(Cr)).length){0;var n=this.mode;0;var r=i[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return r;var s=xr(r);if(!s)return r;if(this._leaving)return wr(e,r);var a="__transition-"+this._uid+"-";s.key=null==s.key?s.isComment?a+"comment":a+s.tag:o(s.key)?0===String(s.key).indexOf(a)?s.key:a+s.key:s.key;var l=(s.data||(s.data={})).transition=kr(this),u=this._vnode,c=xr(u);if(s.data.directives&&s.data.directives.some(Sr)&&(s.data.show=!0),c&&c.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(s,c)&&!mt(c)&&(!c.componentInstance||!c.componentInstance._vnode.isComment)){var d=c.data.transition=T({},l);if("out-in"===n)return this._leaving=!0,lt(d,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),wr(e,r);if("in-out"===n){if(mt(s))return u;var h,p=function(){h()};lt(l,"afterEnter",p),lt(l,"enterCancelled",p),lt(d,"delayLeave",(function(e){h=e}))}}return r}}},Dr=T({tag:String,moveClass:String},yr);function Er(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function Tr(e){e.data.newPos=e.elm.getBoundingClientRect()}function $r(e){var t=e.data.pos,i=e.data.newPos,n=t.left-i.left,r=t.top-i.top;if(n||r){e.data.moved=!0;var s=e.elm.style;s.transform=s.WebkitTransform="translate("+n+"px,"+r+"px)",s.transitionDuration="0s"}}delete Dr.mode;var Pr={Transition:Or,TransitionGroup:{props:Dr,beforeMount:function(){var e=this,t=this._update;this._update=function(i,n){var r=Zt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,r(),t.call(e,i,n)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",i=Object.create(null),n=this.prevChildren=this.children,r=this.$slots.default||[],s=this.children=[],a=kr(this),o=0;o-1?Yi[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Yi[e]=/HTMLUnknownElement/.test(t.toString())},T(wi.options.directives,br),T(wi.options.components,Pr),wi.prototype.__patch__=q?ur:P,wi.prototype.$mount=function(e,t){return function(e,t,i){var n;return e.$el=t,e.$options.render||(e.$options.render=ve),ei(e,"beforeMount"),n=function(){e._update(e._render(),i)},new hi(e,n,P,{before:function(){e._isMounted&&!e._isDestroyed&&ei(e,"beforeUpdate")}},!0),i=!1,null==e.$vnode&&(e._isMounted=!0,ei(e,"mounted")),e}(this,e=e&&q?function(e){if("string"==typeof e){var t=document.querySelector(e);return t||document.createElement("div")}return e}(e):void 0,t)},q&&setTimeout((function(){V.devtools&&re&&re.emit("init",wi)}),0),t.default=wi},function(e,t,i){var n=i(3),r=i(26).f,s=i(32),a=i(13),o=i(102),l=i(148),u=i(100);e.exports=function(e,t){var i,c,d,h,p,f=e.target,m=e.global,v=e.stat;if(i=m?n:v?n[f]||o(f,{}):(n[f]||{}).prototype)for(c in t){if(h=t[c],d=e.noTargetGet?(p=r(i,c))&&p.value:i[c],!u(m?c:f+(v?".":"#")+c,e.forced)&&void 0!==d){if(typeof h==typeof d)continue;l(h,d)}(e.sham||d&&d.sham)&&s(h,"sham",!0),a(i,c,h,e)}}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){var i=function(e){return e&&e.Math==Math&&e};e.exports=i("object"==typeof globalThis&&globalThis)||i("object"==typeof window&&window)||i("object"==typeof self&&self)||i("object"==typeof global&&global)||function(){return this}()||Function("return this")()},function(e,t,i){var n=i(3),r=i(64),s=i(10),a=i(65),o=i(103),l=i(139),u=r("wks"),c=n.Symbol,d=l?c:c&&c.withoutSetter||a;e.exports=function(e){return s(u,e)&&(o||"string"==typeof u[e])||(o&&s(c,e)?u[e]=c[e]:u[e]=d("Symbol."+e)),u[e]}},function(e,t){e.exports=function(e){return"function"==typeof e}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=Object.assign||function(e){for(var t=1;t=a)return e;switch(e){case"%s":return String(t[n++]);case"%d":return Number(t[n++]);case"%j":try{return JSON.stringify(t[n++])}catch(e){return"[Circular]"}break;default:return e}})),l=t[n];n=i.length?{value:void 0,done:!0}:(e=n(i,r),t.index+=e.length,{value:e,done:!1})}))},function(e,t,i){"use strict";t.__esModule=!0,t.isEmpty=t.isEqual=t.arrayEquals=t.looseEqual=t.capitalize=t.kebabCase=t.autoprefixer=t.isFirefox=t.isEdge=t.isIE=t.coerceTruthyValueToArray=t.arrayFind=t.arrayFindIndex=t.escapeRegexpString=t.valueEquals=t.generateId=t.getValueByPath=void 0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.noop=function(){},t.hasOwn=function(e,t){return l.call(e,t)},t.toObject=function(e){for(var t={},i=0;i0&&void 0!==arguments[0]?arguments[0]:"";return String(e).replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")};var c=t.arrayFindIndex=function(e,t){for(var i=0;i!==e.length;++i)if(t(e[i]))return i;return-1},d=(t.arrayFind=function(e,t){var i=c(e,t);return-1!==i?e[i]:void 0},t.coerceTruthyValueToArray=function(e){return Array.isArray(e)?e:e?[e]:[]},t.isIE=function(){return!a.default.prototype.$isServer&&!isNaN(Number(document.documentMode))},t.isEdge=function(){return!a.default.prototype.$isServer&&navigator.userAgent.indexOf("Edge")>-1},t.isFirefox=function(){return!a.default.prototype.$isServer&&!!window.navigator.userAgent.match(/firefox/i)},t.autoprefixer=function(e){if("object"!==(void 0===e?"undefined":n(e)))return e;var t=["ms-","webkit-"];return["transform","transition","animation"].forEach((function(i){var n=e[i];i&&n&&t.forEach((function(t){e[t+i]=n}))})),e},t.kebabCase=function(e){var t=/([^-])([A-Z])/g;return e.replace(t,"$1-$2").replace(t,"$1-$2").toLowerCase()},t.capitalize=function(e){return(0,o.isString)(e)?e.charAt(0).toUpperCase()+e.slice(1):e},t.looseEqual=function(e,t){var i=(0,o.isObject)(e),n=(0,o.isObject)(t);return i&&n?JSON.stringify(e)===JSON.stringify(t):!i&&!n&&String(e)===String(t)}),h=t.arrayEquals=function(e,t){if(t=t||[],(e=e||[]).length!==t.length)return!1;for(var i=0;i0?r(n(e),9007199254740991):0}},function(e,t){var i=Array.isArray;e.exports=i},function(e,t,i){var n=i(3),r=i(163),s=i(164),a=i(138),o=i(32),l=i(4),u=l("iterator"),c=l("toStringTag"),d=a.values,h=function(e,t){if(e){if(e[u]!==d)try{o(e,u,d)}catch(t){e[u]=d}if(e[c]||o(e,c,t),r[t])for(var i in a)if(e[i]!==a[i])try{o(e,i,a[i])}catch(t){e[i]=a[i]}}};for(var p in r)h(n[p]&&n[p].prototype,p);h(s,"DOMTokenList")},function(e,t,i){var n=i(176),r="object"==typeof self&&self&&self.Object===Object&&self,s=n||r||Function("return this")();e.exports=s},function(e,t,i){"use strict";t.__esModule=!0,t.isInContainer=t.getScrollContainer=t.isScroll=t.getStyle=t.once=t.off=t.on=void 0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.hasClass=p,t.addClass=function(e,t){if(!e)return;for(var i=e.className,n=(t||"").split(" "),r=0,s=n.length;r-1}var f=t.getStyle=u<9?function(e,t){if(!a){if(!e||!t)return null;"float"===(t=c(t))&&(t="styleFloat");try{switch(t){case"opacity":try{return e.filters.item("alpha").opacity/100}catch(e){return 1}default:return e.style[t]||e.currentStyle?e.currentStyle[t]:null}}catch(i){return e.style[t]}}}:function(e,t){if(!a){if(!e||!t)return null;"float"===(t=c(t))&&(t="cssFloat");try{var i=document.defaultView.getComputedStyle(e,"");return e.style[t]||i?i[t]:null}catch(i){return e.style[t]}}};var m=t.isScroll=function(e,t){if(!a)return f(e,null!=t?t?"overflow-y":"overflow-x":"overflow").match(/(scroll|auto|overlay)/)};t.getScrollContainer=function(e,t){if(!a){for(var i=e;i;){if([window,document,document.documentElement].includes(i))return window;if(m(i,t))return i;i=i.parentNode}return i}},t.isInContainer=function(e,t){if(a||!e||!t)return!1;var i=e.getBoundingClientRect(),n=void 0;return n=[window,document,document.documentElement,null,void 0].includes(t)?{top:0,right:window.innerWidth,bottom:window.innerHeight,left:0}:t.getBoundingClientRect(),i.topn.top&&i.right>n.left&&i.left"+e+"<\/script>"},f=function(e){e.write(p("")),e.close();var t=e.parentWindow.Object;return e=null,t},m=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t;m="undefined"!=typeof document?document.domain&&n?f(n):((t=u("iframe")).style.display="none",l.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(p("document.F=Object")),e.close(),e.F):f(n);for(var i=a.length;i--;)delete m.prototype[a[i]];return m()};o[d]=!0,e.exports=Object.create||function(e,t){var i;return null!==e?(h.prototype=r(e),i=new h,h.prototype=null,i[d]=e):i=m(),void 0===t?i:s(i,t)}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,i){"use strict";var n=i(1),r=i(33).filter;n({target:"Array",proto:!0,forced:!i(81)("filter")},{filter:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}})},function(e,t){e.exports=!1},function(e,t,i){var n=i(5),r=i(143);e.exports=function(e){if(n(e))return e;throw TypeError(r(e)+" is not a function")}},function(e,t,i){var n=i(7),r=i(11),s=i(51);e.exports=n?function(e,t,i){return r.f(e,t,s(1,i))}:function(e,t,i){return e[t]=i,e}},function(e,t,i){var n=i(75),r=i(47),s=i(15),a=i(21),o=i(165),l=[].push,u=function(e){var t=1==e,i=2==e,u=3==e,c=4==e,d=6==e,h=7==e,p=5==e||d;return function(f,m,v,g){for(var _,b,y=s(f),x=r(y),k=n(m,v,3),w=a(x.length),C=0,S=g||o,O=t?S(f,w):i||h?S(f,0):void 0;w>C;C++)if((p||C in x)&&(b=k(_=x[C],C,y),e))if(t)O[C]=b;else if(b)switch(e){case 3:return!0;case 5:return _;case 6:return C;case 2:l.call(O,_)}else switch(e){case 4:return!1;case 7:l.call(O,_)}return d?-1:u||c?c:O}};e.exports={forEach:u(0),map:u(1),filter:u(2),some:u(3),every:u(4),find:u(5),findIndex:u(6),filterReject:u(7)}},function(e,t){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,t,i){var n=i(281),r=i(284);e.exports=function(e,t){var i=r(e,t);return n(i)?i:void 0}},function(e,t,i){"use strict";function n(e,t,i){this.$children.forEach((function(r){r.$options.componentName===e?r.$emit.apply(r,[t].concat(i)):n.apply(r,[e,t].concat([i]))}))}t.__esModule=!0,t.default={methods:{dispatch:function(e,t,i){for(var n=this.$parent||this.$root,r=n.$options.componentName;n&&(!r||r!==e);)(n=n.$parent)&&(r=n.$options.componentName);n&&n.$emit.apply(n,[t].concat(i))},broadcast:function(e,t,i){n.call(this,e,t,i)}}}},function(e,t,i){"use strict";i.d(t,"a",(function(){return s}));i(133);var n=i(54);i(42),i(52),i(14),i(82),i(18),i(23),i(173);var r=i(92);function s(e){return function(e){if(Array.isArray(e))return Object(n.a)(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Object(r.a)(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},function(e,t,i){var n,r,s,a=i(237),o=i(3),l=i(8),u=i(32),c=i(10),d=i(101),h=i(70),p=i(49),f=o.WeakMap;if(a||d.state){var m=d.state||(d.state=new f),v=m.get,g=m.has,_=m.set;n=function(e,t){if(g.call(m,e))throw new TypeError("Object already initialized");return t.facade=e,_.call(m,e,t),t},r=function(e){return v.call(m,e)||{}},s=function(e){return g.call(m,e)}}else{var b=h("state");p[b]=!0,n=function(e,t){if(c(e,b))throw new TypeError("Object already initialized");return t.facade=e,u(e,b,t),t},r=function(e){return c(e,b)?e[b]:{}},s=function(e){return c(e,b)}}e.exports={set:n,get:r,has:s,enforce:function(e){return s(e)?r(e):n(e,{})},getterFor:function(e){return function(t){var i;if(!l(t)||(i=r(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return i}}}},function(e,t,i){"use strict";var n=i(2);e.exports=function(e,t){var i=[][e];return!!i&&n((function(){i.call(null,t||function(){throw 1},1)}))}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,i){"use strict";var n=i(1),r=i(3),s=i(17),a=i(30),o=i(7),l=i(103),u=i(2),c=i(10),d=i(43),h=i(5),p=i(8),f=i(68),m=i(9),v=i(15),g=i(16),_=i(67),b=i(20),y=i(51),x=i(27),k=i(48),w=i(45),C=i(170),S=i(106),O=i(26),D=i(11),E=i(72),T=i(13),$=i(64),P=i(70),j=i(49),M=i(65),I=i(4),A=i(171),N=i(172),L=i(73),F=i(39),V=i(33).forEach,z=P("hidden"),R=I("toPrimitive"),B=F.set,H=F.getterFor("Symbol"),W=Object.prototype,q=r.Symbol,U=s("JSON","stringify"),G=O.f,Y=D.f,K=C.f,X=E.f,Z=$("symbols"),Q=$("op-symbols"),J=$("string-to-symbol-registry"),ee=$("symbol-to-string-registry"),te=$("wks"),ie=r.QObject,ne=!ie||!ie.prototype||!ie.prototype.findChild,re=o&&u((function(){return 7!=x(Y({},"a",{get:function(){return Y(this,"a",{value:7}).a}})).a}))?function(e,t,i){var n=G(W,t);n&&delete W[t],Y(e,t,i),n&&e!==W&&Y(W,t,n)}:Y,se=function(e,t){var i=Z[e]=x(q.prototype);return B(i,{type:"Symbol",tag:e,description:t}),o||(i.description=t),i},ae=function(e,t,i){e===W&&ae(Q,t,i),m(e);var n=_(t);return m(i),c(Z,n)?(i.enumerable?(c(e,z)&&e[z][n]&&(e[z][n]=!1),i=x(i,{enumerable:y(0,!1)})):(c(e,z)||Y(e,z,y(1,{})),e[z][n]=!0),re(e,n,i)):Y(e,n,i)},oe=function(e,t){m(e);var i=g(t),n=k(i).concat(de(i));return V(n,(function(t){o&&!le.call(i,t)||ae(e,t,i[t])})),e},le=function(e){var t=_(e),i=X.call(this,t);return!(this===W&&c(Z,t)&&!c(Q,t))&&(!(i||!c(this,t)||!c(Z,t)||c(this,z)&&this[z][t])||i)},ue=function(e,t){var i=g(e),n=_(t);if(i!==W||!c(Z,n)||c(Q,n)){var r=G(i,n);return!r||!c(Z,n)||c(i,z)&&i[z][n]||(r.enumerable=!0),r}},ce=function(e){var t=K(g(e)),i=[];return V(t,(function(e){c(Z,e)||c(j,e)||i.push(e)})),i},de=function(e){var t=e===W,i=K(t?Q:g(e)),n=[];return V(i,(function(e){!c(Z,e)||t&&!c(W,e)||n.push(Z[e])})),n};(l||(T((q=function(){if(this instanceof q)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?b(arguments[0]):void 0,t=M(e),i=function(e){this===W&&i.call(Q,e),c(this,z)&&c(this[z],t)&&(this[z][t]=!1),re(this,t,y(1,e))};return o&&ne&&re(W,t,{configurable:!0,set:i}),se(t,e)}).prototype,"toString",(function(){return H(this).tag})),T(q,"withoutSetter",(function(e){return se(M(e),e)})),E.f=le,D.f=ae,O.f=ue,w.f=C.f=ce,S.f=de,A.f=function(e){return se(I(e),e)},o&&(Y(q.prototype,"description",{configurable:!0,get:function(){return H(this).description}}),a||T(W,"propertyIsEnumerable",le,{unsafe:!0}))),n({global:!0,wrap:!0,forced:!l,sham:!l},{Symbol:q}),V(k(te),(function(e){N(e)})),n({target:"Symbol",stat:!0,forced:!l},{for:function(e){var t=b(e);if(c(J,t))return J[t];var i=q(t);return J[t]=i,ee[i]=t,i},keyFor:function(e){if(!f(e))throw TypeError(e+" is not a symbol");if(c(ee,e))return ee[e]},useSetter:function(){ne=!0},useSimple:function(){ne=!1}}),n({target:"Object",stat:!0,forced:!l,sham:!o},{create:function(e,t){return void 0===t?x(e):oe(x(e),t)},defineProperty:ae,defineProperties:oe,getOwnPropertyDescriptor:ue}),n({target:"Object",stat:!0,forced:!l},{getOwnPropertyNames:ce,getOwnPropertySymbols:de}),n({target:"Object",stat:!0,forced:u((function(){S.f(1)}))},{getOwnPropertySymbols:function(e){return S.f(v(e))}}),U)&&n({target:"JSON",stat:!0,forced:!l||u((function(){var e=q();return"[null]"!=U([e])||"{}"!=U({a:e})||"{}"!=U(Object(e))}))},{stringify:function(e,t,i){for(var n,r=[e],s=1;arguments.length>s;)r.push(arguments[s++]);if(n=t,(p(t)||void 0!==e)&&!f(e))return d(t)||(t=function(e,t){if(h(n)&&(t=n.call(this,e,t)),!f(t))return t}),r[1]=t,U.apply(null,r)}});if(!q.prototype[R]){var he=q.prototype.valueOf;T(q.prototype,R,(function(){return he.apply(this,arguments)}))}L(q,"Symbol"),j[z]=!0},function(e,t,i){var n=i(34);e.exports=Array.isArray||function(e){return"Array"==n(e)}},function(e,t,i){var n,r,s=i(3),a=i(60),o=s.process,l=s.Deno,u=o&&o.versions||l&&l.version,c=u&&u.v8;c?r=(n=c.split("."))[0]<4?1:n[0]+n[1]:a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(r=n[1]),e.exports=r&&+r},function(e,t,i){var n=i(144),r=i(105).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,r)}},function(e,t,i){var n=i(53),r=i(266),s=i(267),a=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?r(e):s(e)}},function(e,t,i){var n=i(2),r=i(34),s="".split;e.exports=n((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==r(e)?s.call(e,""):Object(e)}:Object},function(e,t,i){var n=i(144),r=i(105);e.exports=Object.keys||function(e){return n(e,r)}},function(e,t){e.exports={}},function(e,t){e.exports={}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,i){"use strict";var n=i(1),r=i(7),s=i(3),a=i(10),o=i(5),l=i(8),u=i(11).f,c=i(148),d=s.Symbol;if(r&&o(d)&&(!("description"in d.prototype)||void 0!==d().description)){var h={},p=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof p?new d(e):void 0===e?d():d(e);return""===e&&(h[t]=!0),t};c(p,d);var f=p.prototype=d.prototype;f.constructor=p;var m=f.toString,v="Symbol(test)"==String(d("test")),g=/^Symbol\((.*)\)[^)]+$/;u(f,"description",{configurable:!0,get:function(){var e=l(this)?this.valueOf():this,t=m.call(e);if(a(h,e))return"";var i=v?t.slice(7,-1):t.replace(g,"$1");return""===i?void 0:i}}),n({global:!0,forced:!0},{Symbol:p})}},function(e,t,i){var n=i(24).Symbol;e.exports=n},function(e,t,i){"use strict";function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i1?arguments[1]:void 0)}})},function(e,t,i){var n=i(31);e.exports=function(e,t){var i=e[t];return null==i?void 0:n(i)}},function(e,t,i){"use strict";var n=i(1),r=i(168);n({target:"Array",proto:!0,forced:[].forEach!=r},{forEach:r})},function(e,t,i){var n=i(17);e.exports=n("navigator","userAgent")||""},function(e,t,i){"use strict";var n=i(1),r=i(43),s=i(77),a=i(8),o=i(145),l=i(21),u=i(16),c=i(80),d=i(4),h=i(81)("slice"),p=d("species"),f=[].slice,m=Math.max;n({target:"Array",proto:!0,forced:!h},{slice:function(e,t){var i,n,d,h=u(this),v=l(h.length),g=o(e,v),_=o(void 0===t?v:t,v);if(r(h)&&(i=h.constructor,(s(i)&&(i===Array||r(i.prototype))||a(i)&&null===(i=i[p]))&&(i=void 0),i===Array||void 0===i))return f.call(h,g,_);for(n=new(void 0===i?Array:i)(m(_-g,0)),d=0;g<_;g++,d++)g in h&&c(n,d,h[g]);return n.length=d,n}})},function(e,t,i){var n=i(7),r=i(10),s=Function.prototype,a=n&&Object.getOwnPropertyDescriptor,o=r(s,"name"),l=o&&"something"===function(){}.name,u=o&&(!n||n&&a(s,"name").configurable);e.exports={EXISTS:o,PROPER:l,CONFIGURABLE:u}},function(e,t,i){var n=i(7),r=i(62).EXISTS,s=i(11).f,a=Function.prototype,o=a.toString,l=/^\s*function ([^ (]*)/;n&&!r&&s(a,"name",{configurable:!0,get:function(){try{return o.call(this).match(l)[1]}catch(e){return""}}})},function(e,t,i){var n=i(30),r=i(101);(e.exports=function(e,t){return r[e]||(r[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.18.1",mode:n?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},function(e,t){var i=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++i+n).toString(36)}},function(e,t,i){var n=i(3),r=i(8),s=n.document,a=r(s)&&r(s.createElement);e.exports=function(e){return a?s.createElement(e):{}}},function(e,t,i){var n=i(142),r=i(68);e.exports=function(e){var t=n(e,"string");return r(t)?t:String(t)}},function(e,t,i){var n=i(5),r=i(17),s=i(139);e.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return n(t)&&Object(e)instanceof t}},function(e,t){var i=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:i)(e)}},function(e,t,i){var n=i(64),r=i(65),s=n("keys");e.exports=function(e){return s[e]||(s[e]=r(e))}},function(e,t,i){var n=i(5),r=i(101),s=Function.toString;n(r.inspectSource)||(r.inspectSource=function(e){return s.call(e)}),e.exports=r.inspectSource},function(e,t,i){"use strict";var n={}.propertyIsEnumerable,r=Object.getOwnPropertyDescriptor,s=r&&!n.call({1:2},1);t.f=s?function(e){var t=r(this,e);return!!t&&t.enumerable}:n},function(e,t,i){var n=i(11).f,r=i(10),s=i(4)("toStringTag");e.exports=function(e,t,i){e&&!r(e=i?e:e.prototype,s)&&n(e,s,{configurable:!0,value:t})}},function(e,t,i){var n=i(9),r=i(239);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,i={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(i,[]),t=i instanceof Array}catch(e){}return function(i,s){return n(i),r(s),t?e.call(i,s):i.__proto__=s,i}}():void 0)},function(e,t,i){var n=i(31);e.exports=function(e,t,i){if(n(e),void 0===t)return e;switch(i){case 0:return function(){return e.call(t)};case 1:return function(i){return e.call(t,i)};case 2:return function(i,n){return e.call(t,i,n)};case 3:return function(i,n,r){return e.call(t,i,n,r)}}return function(){return e.apply(t,arguments)}}},function(e,t,i){var n=i(109),r=i(5),s=i(34),a=i(4)("toStringTag"),o="Arguments"==s(function(){return arguments}());e.exports=n?s:function(e){var t,i,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(i=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),a))?i:o?s(t):"Object"==(n=s(t))&&r(t.callee)?"Arguments":n}},function(e,t,i){var n=i(2),r=i(5),s=i(76),a=i(17),o=i(71),l=[],u=a("Reflect","construct"),c=/^\s*(?:class|function)\b/,d=c.exec,h=!c.exec((function(){})),p=function(e){if(!r(e))return!1;try{return u(Object,l,e),!0}catch(e){return!1}};e.exports=!u||n((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?function(e){if(!r(e))return!1;switch(s(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return h||!!d.call(c,o(e))}:p},function(e,t,i){var n=i(34),r=i(3);e.exports="process"==n(r.process)},function(e,t,i){"use strict";i.d(t,"a",(function(){return r}));i(14);function n(e,t,i,n,r,s,a){try{var o=e[s](a),l=o.value}catch(e){return void i(e)}o.done?t(l):Promise.resolve(l).then(n,r)}function r(e){return function(){var t=this,i=arguments;return new Promise((function(r,s){var a=e.apply(t,i);function o(e){n(a,r,s,o,l,"next",e)}function l(e){n(a,r,s,o,l,"throw",e)}o(void 0)}))}}},function(e,t,i){"use strict";var n=i(67),r=i(11),s=i(51);e.exports=function(e,t,i){var a=n(t);a in e?r.f(e,a,s(0,i)):e[a]=i}},function(e,t,i){var n=i(2),r=i(4),s=i(44),a=r("species");e.exports=function(e){return s>=51||!n((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},function(e,t,i){i(172)("iterator")},function(e,t,i){var n=i(271),r=i(272),s=i(273),a=i(274),o=i(275);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t-1?"center "+t:t+" center"}},appendArrow:function(e){var t=void 0;if(!this.appended){for(var i in this.appended=!0,e.attributes)if(/^_v-/.test(e.attributes[i].name)){t=e.attributes[i].name;break}var n=document.createElement("div");t&&n.setAttribute(t,""),n.setAttribute("x-arrow",""),n.className="popper__arrow",e.appendChild(n)}}},beforeDestroy:function(){this.doDestroy(!0),this.popperElm&&this.popperElm.parentNode===document.body&&(this.popperElm.removeEventListener("click",l),document.body.removeChild(this.popperElm))},deactivated:function(){this.$options.beforeDestroy[0].call(this)}}},function(e,t,i){"use strict";t.__esModule=!0,t.default=function(e){for(var t=1,i=arguments.length;t=t||i<0||v&&e-u>=s}function x(){var e=p();if(y(e))return k(e);o=setTimeout(x,function(e){var i=t-(e-l);return v?h(i,s-(e-u)):i}(e))}function k(e){return o=void 0,g&&n?_(e):(n=r=void 0,a)}function w(){var e=p(),i=y(e);if(n=arguments,r=this,l=e,i){if(void 0===o)return b(l);if(v)return o=setTimeout(x,t),_(l)}return void 0===o&&(o=setTimeout(x,t)),a}return t=m(t)||0,f(i)&&(c=!!i.leading,s=(v="maxWait"in i)?d(m(i.maxWait)||0,t):s,g="trailing"in i?!!i.trailing:g),w.cancel=function(){void 0!==o&&clearTimeout(o),u=0,n=l=r=o=void 0},w.flush=function(){return void 0===o?a:k(p())},w}},function(e,t,i){var n,r; /* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress - * @license MIT */void 0===(r="function"==typeof(n=function(){var e,t,i={version:"0.2.0"},n=i.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function r(e,t,i){return ei?i:e}function s(e){return 100*(-1+e)}i.configure=function(e){var t,i;for(t in e)void 0!==(i=e[t])&&e.hasOwnProperty(t)&&(n[t]=i);return this},i.status=null,i.set=function(e){var t=i.isStarted();e=r(e,n.minimum,1),i.status=1===e?null:e;var l=i.render(!t),u=l.querySelector(n.barSelector),c=n.speed,d=n.easing;return l.offsetWidth,a((function(t){""===n.positionUsing&&(n.positionUsing=i.getPositioningCSS()),o(u,function(e,t,i){var r;return(r="translate3d"===n.positionUsing?{transform:"translate3d("+s(e)+"%,0,0)"}:"translate"===n.positionUsing?{transform:"translate("+s(e)+"%,0)"}:{"margin-left":s(e)+"%"}).transition="all "+t+"ms "+i,r}(e,c,d)),1===e?(o(l,{transition:"none",opacity:1}),l.offsetWidth,setTimeout((function(){o(l,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){i.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},i.isStarted=function(){return"number"==typeof i.status},i.start=function(){i.status||i.set(0);var e=function(){setTimeout((function(){i.status&&(i.trickle(),e())}),n.trickleSpeed)};return n.trickle&&e(),this},i.done=function(e){return e||i.status?i.inc(.3+.5*Math.random()).set(1):this},i.inc=function(e){var t=i.status;return t?("number"!=typeof e&&(e=(1-t)*r(Math.random()*t,.1,.95)),t=r(t+e,0,.994),i.set(t)):i.start()},i.trickle=function(){return i.inc(Math.random()*n.trickleRate)},e=0,t=0,i.promise=function(n){return n&&"resolved"!==n.state()?(0===t&&i.start(),e++,t++,n.always((function(){0==--t?(e=0,i.done()):i.set((e-t)/e)})),this):this},i.render=function(e){if(i.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=n.template;var r,a=t.querySelector(n.barSelector),l=e?"-100":s(i.status||0),c=document.querySelector(n.parent);return o(a,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),n.showSpinner||(r=t.querySelector(n.spinnerSelector))&&h(r),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},i.remove=function(){c(document.documentElement,"nprogress-busy"),c(document.querySelector(n.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&h(e)},i.isRendered=function(){return!!document.getElementById("nprogress")},i.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var a=function(){var e=[];function t(){var i=e.shift();i&&i(t)}return function(i){e.push(i),1==e.length&&t()}}(),o=function(){var e=["Webkit","O","Moz","ms"],t={};function i(i){return i=i.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()})),t[i]||(t[i]=function(t){var i=document.body.style;if(t in i)return t;for(var n,r=e.length,s=t.charAt(0).toUpperCase()+t.slice(1);r--;)if((n=e[r]+s)in i)return n;return t}(i))}function n(e,t,n){t=i(t),e.style[t]=n}return function(e,t){var i,r,s=arguments;if(2==s.length)for(i in t)void 0!==(r=t[i])&&t.hasOwnProperty(i)&&n(e,i,r);else n(e,s[1],s[2])}}();function l(e,t){return("string"==typeof e?e:d(e)).indexOf(" "+t+" ")>=0}function u(e,t){var i=d(e),n=i+t;l(i,t)||(e.className=n.substring(1))}function c(e,t){var i,n=d(e);l(e,t)&&(i=n.replace(" "+t+" "," "),e.className=i.substring(1,i.length-1))}function d(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function h(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return i})?n.call(t,i,t,e):n)||(e.exports=r)},function(e,t,i){"use strict";var n=i(218),r=i(2),s=i(9),a=i(5),o=i(69),l=i(21),u=i(20),c=i(28),d=i(219),h=i(58),p=i(262),f=i(220),m=i(4)("replace"),v=Math.max,g=Math.min,_="$0"==="a".replace(/./,"$0"),b=!!/./[m]&&""===/./[m]("a","$0");n("replace",(function(e,t,i){var n=b?"$":"$0";return[function(e,i){var n=c(this),r=null==e?void 0:h(e,m);return r?r.call(e,n,i):t.call(u(n),e,i)},function(e,r){var c=s(this),h=u(e);if("string"==typeof r&&-1===r.indexOf(n)&&-1===r.indexOf("$<")){var m=i(t,c,h,r);if(m.done)return m.value}var _=a(r);_||(r=u(r));var b=c.global;if(b){var y=c.unicode;c.lastIndex=0}for(var x=[];;){var k=f(c,h);if(null===k)break;if(x.push(k),!b)break;""===u(k[0])&&(c.lastIndex=d(h,l(c.lastIndex),y))}for(var w,C="",S=0,O=0;O=S&&(C+=h.slice(S,E)+M,S=E+D.length)}return C+h.slice(S)}]}),!!r((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}))||!_||b)},function(e,t,i){var n=i(3),r=i(163),s=i(164),a=i(168),o=i(32),l=function(e){if(e&&e.forEach!==a)try{o(e,"forEach",a)}catch(t){e.forEach=a}};for(var u in r)r[u]&&l(n[u]&&n[u].prototype);l(s)},function(e,t,i){"use strict";var n,r,s=i(20),a=i(137),o=i(217),l=i(64),u=i(27),c=i(39).get,d=i(227),h=i(228),p=RegExp.prototype.exec,f=l("native-string-replace",String.prototype.replace),m=p,v=(n=/a/,r=/b*/g,p.call(n,"a"),p.call(r,"a"),0!==n.lastIndex||0!==r.lastIndex),g=o.UNSUPPORTED_Y||o.BROKEN_CARET,_=void 0!==/()??/.exec("")[1];(v||_||g||d||h)&&(m=function(e){var t,i,n,r,o,l,d,h=this,b=c(h),y=s(e),x=b.raw;if(x)return x.lastIndex=h.lastIndex,t=m.call(x,y),h.lastIndex=x.lastIndex,t;var k=b.groups,w=g&&h.sticky,C=a.call(h),S=h.source,O=0,D=y;if(w&&(-1===(C=C.replace("y","")).indexOf("g")&&(C+="g"),D=y.slice(h.lastIndex),h.lastIndex>0&&(!h.multiline||h.multiline&&"\n"!==y.charAt(h.lastIndex-1))&&(S="(?: "+S+")",D=" "+D,O++),i=new RegExp("^(?:"+S+")",C)),_&&(i=new RegExp("^"+S+"$(?!\\s)",C)),v&&(n=h.lastIndex),r=p.call(w?i:h,D),w?r?(r.input=r.input.slice(O),r[0]=r[0].slice(O),r.index=h.lastIndex,h.lastIndex+=r[0].length):h.lastIndex=0:v&&r&&(h.lastIndex=h.global?r.index+r[0].length:n),_&&r&&r.length>1&&f.call(r[0],i,(function(){for(o=1;oc;)if((o=l[c++])!=o)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===i)return e||c||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,i){var n=i(10),r=i(5),s=i(15),a=i(70),o=i(151),l=a("IE_PROTO"),u=Object.prototype;e.exports=o?Object.getPrototypeOf:function(e){var t=s(e);if(n(t,l))return t[l];var i=t.constructor;return r(i)&&t instanceof i?i.prototype:t instanceof Object?u:null}},function(e,t,i){var n=i(76),r=i(58),s=i(50),a=i(4)("iterator");e.exports=function(e){if(null!=e)return r(e,a)||r(e,"@@iterator")||s[n(e)]}},function(e,t,i){var n={};n[i(4)("toStringTag")]="z",e.exports="[object z]"===String(n)},function(e,t,i){var n=i(265),r=i(41),s=Object.prototype,a=s.hasOwnProperty,o=s.propertyIsEnumerable,l=n(function(){return arguments}())?n:function(e){return r(e)&&a.call(e,"callee")&&!o.call(e,"callee")};e.exports=l},function(e,t,i){var n=i(35)(i(24),"Map");e.exports=n},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,i){var n=i(285),r=i(292),s=i(294),a=i(295),o=i(296);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=9007199254740991}},function(e,t,i){var n=i(22),r=i(117),s=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(n(e))return!1;var i=typeof e;return!("number"!=i&&"symbol"!=i&&"boolean"!=i&&null!=e&&!r(e))||(a.test(e)||!s.test(e)||null!=t&&e in Object(t))}},function(e,t,i){var n=i(46),r=i(41);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==n(e)}},function(e,t){e.exports=function(e){return e}},function(e,t,i){var n=i(1),r=i(7);n({target:"Object",stat:!0,forced:!r,sham:!r},{defineProperty:i(11).f})},function(e,t,i){"use strict";t.__esModule=!0,t.i18n=t.use=t.t=void 0;var n=a(i(361)),r=a(i(0)),s=a(i(362));function a(e){return e&&e.__esModule?e:{default:e}}var o=(0,a(i(363)).default)(r.default),l=n.default,u=!1,c=function(){var e=Object.getPrototypeOf(this||r.default).$t;if("function"==typeof e&&r.default.locale)return u||(u=!0,r.default.locale(r.default.config.lang,(0,s.default)(l,r.default.locale(r.default.config.lang)||{},{clone:!0}))),e.apply(this,arguments)},d=t.t=function(e,t){var i=c.apply(this,arguments);if(null!=i)return i;for(var n=e.split("."),r=l,s=0,a=n.length;s1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;l||(l=document.createElement("textarea"),document.body.appendChild(l));var n=d(e),r=n.paddingSize,s=n.borderSize,a=n.boxSizing,o=n.contextStyle;l.setAttribute("style",o+";"+u),l.value=e.value||e.placeholder||"";var c=l.scrollHeight,h={};"border-box"===a?c+=s:"content-box"===a&&(c-=r),l.value="";var p=l.scrollHeight-r;if(null!==t){var f=p*t;"border-box"===a&&(f=f+r+s),c=Math.max(f,c),h.minHeight=f+"px"}if(null!==i){var m=p*i;"border-box"===a&&(m=m+r+s),c=Math.min(m,c)}return h.height=c+"px",l.parentNode&&l.parentNode.removeChild(l),l=null,h}var p=i(9),f=i.n(p),m=i(21),v={name:"ElInput",componentName:"ElInput",mixins:[s.a,o.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return f()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick((function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()}))}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=h(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:h(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionUpdate:function(e){var t=e.target.value,i=t[t.length-1]||"";this.isComposing=!Object(m.isKorean)(i)},handleCompositionEnd:function(e){this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n=t.length)break;r=t[n++]}else{if((n=t.next()).done)break;r=n.value}var s=r.target.__resizeListeners__||[];s.length&&s.forEach((function(e){e()}))}};t.addResizeListener=function(e,t){a||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new s.default(o),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},t.removeResizeListener=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())}},function(e,t){e.exports=function(e,t,i,n){var r,s=0;return"boolean"!=typeof t&&(n=i,i=t,t=void 0),function(){var a=this,o=Number(new Date)-s,l=arguments;function u(){s=Number(new Date),i.apply(a,l)}function c(){r=void 0}n&&!r&&u(),r&&clearTimeout(r),void 0===n&&o>e?u():!0!==t&&(r=setTimeout(n?c:u,void 0===n?e-o:e))}}},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=132)}({132:function(e,t,i){"use strict";i.r(t);var n=i(16),r=i(38),s=i.n(r),a=i(3),o=i(2),l={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};function u(e){var t=e.move,i=e.size,n=e.bar,r={},s="translate"+n.axis+"("+t+"%)";return r[n.size]=i,r.transform=s,r.msTransform=s,r.webkitTransform=s,r}var c={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return l[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,i=this.move,n=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+n.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:u({size:t,move:i,bar:n})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(o.on)(document,"mousemove",this.mouseMoveDocumentHandler),Object(o.on)(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var i=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(o.off)(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(o.off)(document,"mouseup",this.mouseUpDocumentHandler)}},d={name:"ElScrollbar",components:{Bar:c},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=s()(),i=this.wrapStyle;if(t){var n="-"+t+"px",r="margin-bottom: "+n+"; margin-right: "+n+";";Array.isArray(this.wrapStyle)?(i=Object(a.toObject)(this.wrapStyle)).marginRight=i.marginBottom=n:"string"==typeof this.wrapStyle?i+=r:i=r}var o=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),l=e("div",{ref:"wrap",style:i,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[o]]),u=void 0;return u=this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:i},[[o]])]:[l,e(c,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(c,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})],e("div",{class:"el-scrollbar"},u)},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,i=this.wrap;i&&(e=100*i.clientHeight/i.scrollHeight,t=100*i.clientWidth/i.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(n.addResizeListener)(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(n.removeResizeListener)(this.$refs.resize,this.update)},install:function(e){e.component(d.name,d)}};t.default=d},16:function(e,t){e.exports=i(124)},2:function(e,t){e.exports=i(25)},3:function(e,t){e.exports=i(19)},38:function(e,t){e.exports=i(122)}})},function(e,t,i){"use strict";t.__esModule=!0,t.default=function(e){return{methods:{focus:function(){this.$refs[e].focus()}}}}},function(e,t,i){"use strict";t.__esModule=!0,t.default=function(e,t){if(s.default.prototype.$isServer)return;if(!t)return void(e.scrollTop=0);var i=[],n=t.offsetParent;for(;n&&e!==n&&e.contains(n);)i.push(n),n=n.offsetParent;var r=t.offsetTop+i.reduce((function(e,t){return e+t.offsetTop}),0),a=r+t.offsetHeight,o=e.scrollTop,l=o+e.clientHeight;rl&&(e.scrollTop=a-e.clientHeight)};var n,r=i(0),s=(n=r)&&n.__esModule?n:{default:n}},function(e,t,i){"use strict";t.__esModule=!0;var n=n||{};n.Utils=n.Utils||{},n.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var i=e.childNodes[t];if(n.Utils.attemptFocus(i)||n.Utils.focusLastDescendant(i))return!0}return!1},n.Utils.attemptFocus=function(e){if(!n.Utils.isFocusable(e))return!1;n.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return n.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},n.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},n.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),r=arguments.length,s=Array(r>2?r-2:0),a=2;a1?arguments[1]:void 0)}})},function(e,t,i){var n=i(9),r=i(157),s=i(4)("species");e.exports=function(e,t){var i,a=n(e).constructor;return void 0===a||null==(i=n(a)[s])?t:r(i)}},function(e,t){!function(t){"use strict";var i=Object.prototype,n=i.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag",l="object"==typeof e,u=t.regeneratorRuntime;if(u)l&&(e.exports=u);else{(u=t.regeneratorRuntime=l?e.exports:{}).wrap=m;var c={},d={};d[s]=function(){return this};var h=Object.getPrototypeOf,p=h&&h(h(O([])));p&&p!==i&&n.call(p,s)&&(d=p);var f=b.prototype=g.prototype=Object.create(d);_.prototype=f.constructor=b,b.constructor=_,b[o]=_.displayName="GeneratorFunction",u.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===_||"GeneratorFunction"===(t.displayName||t.name))},u.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,o in e||(e[o]="GeneratorFunction")),e.prototype=Object.create(f),e},u.awrap=function(e){return{__await:e}},y(x.prototype),x.prototype[a]=function(){return this},u.AsyncIterator=x,u.async=function(e,t,i,n){var r=new x(m(e,t,i,n));return u.isGeneratorFunction(t)?r:r.next().then((function(e){return e.done?e.value:r.next()}))},y(f),f[o]="Generator",f[s]=function(){return this},f.toString=function(){return"[object Generator]"},u.keys=function(e){var t=[];for(var i in e)t.push(i);return t.reverse(),function i(){for(;t.length;){var n=t.pop();if(n in e)return i.value=n,i.done=!1,i}return i.done=!0,i}},u.values=O,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function i(i,n){return a.type="throw",a.arg=e,t.next=i,n&&(t.method="next",t.arg=void 0),!!n}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],a=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var o=n.call(s,"catchLoc"),l=n.call(s,"finallyLoc");if(o&&l){if(this.prev=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--t){var i=this.tryEntries[t];if(i.finallyLoc===e)return this.complete(i.completion,i.afterLoc),C(i),c}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.tryLoc===e){var n=i.completion;if("throw"===n.type){var r=n.arg;C(i)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,i){return this.delegate={iterator:O(e),resultName:t,nextLoc:i},"next"===this.method&&(this.arg=void 0),c}}}function m(e,t,i,n){var r=t&&t.prototype instanceof g?t:g,s=Object.create(r.prototype),a=new S(n||[]);return s._invoke=function(e,t,i){var n="suspendedStart";return function(r,s){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===r)throw s;return D()}for(i.method=r,i.arg=s;;){var a=i.delegate;if(a){var o=k(a,i);if(o){if(o===c)continue;return o}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if("suspendedStart"===n)throw n="completed",i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);n="executing";var l=v(e,t,i);if("normal"===l.type){if(n=i.done?"completed":"suspendedYield",l.arg===c)continue;return{value:l.arg,done:i.done}}"throw"===l.type&&(n="completed",i.method="throw",i.arg=l.arg)}}}(e,i,a),s}function v(e,t,i){try{return{type:"normal",arg:e.call(t,i)}}catch(e){return{type:"throw",arg:e}}}function g(){}function _(){}function b(){}function y(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function x(e){var t;this._invoke=function(i,r){function s(){return new Promise((function(t,s){!function t(i,r,s,a){var o=v(e[i],e,r);if("throw"!==o.type){var l=o.arg,u=l.value;return u&&"object"==typeof u&&n.call(u,"__await")?Promise.resolve(u.__await).then((function(e){t("next",e,s,a)}),(function(e){t("throw",e,s,a)})):Promise.resolve(u).then((function(e){l.value=e,s(l)}),a)}a(o.arg)}(i,r,t,s)}))}return t=t?t.then(s,s):s()}}function k(e,t){var i=e.iterator[t.method];if(void 0===i){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,k(e,t),"throw"===t.method))return c;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var n=v(i,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,c;var r=n.arg;return r?r.done?(t[e.resultName]=r.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,c):r:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,c)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function O(e){if(e){var t=e[s];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,r=function t(){for(;++i=51||!r((function(){var e=[];return e[f]=!1,e.concat()[0]!==e})),v=d("concat"),g=function(e){if(!a(e))return!1;var t=e[f];return void 0!==t?!!t:s(e)};n({target:"Array",proto:!0,forced:!m||!v},{concat:function(e){var t,i,n,r,s,a=o(this),d=c(a,0),h=0;for(t=-1,n=arguments.length;t9007199254740991)throw TypeError("Maximum allowed index exceeded");for(i=0;i=9007199254740991)throw TypeError("Maximum allowed index exceeded");u(d,h++,s)}return d.length=h,d}})},function(e,t,i){var n=i(216);e.exports=function(e){if(n(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,i){var n=i(4)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(i){try{return t[n]=!1,"/./"[e](t)}catch(e){}}return!1}},function(e,t,i){"use strict";var n=i(9);e.exports=function(){var e=n(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,i){"use strict";var n=i(16),r=i(99),s=i(50),a=i(39),o=i(147),l=a.set,u=a.getterFor("Array Iterator");e.exports=o(Array,"Array",(function(e,t){l(this,{type:"Array Iterator",target:n(e),index:0,kind:t})}),(function(){var e=u(this),t=e.target,i=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==i?{value:n,done:!1}:"values"==i?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}}),"values"),s.Arguments=s.Array,r("keys"),r("values"),r("entries")},function(e,t,i){var n=i(103);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,i){var n=i(7),r=i(11),s=i(9),a=i(48);e.exports=n?Object.defineProperties:function(e,t){s(e);for(var i,n=a(t),o=n.length,l=0;o>l;)r.f(e,i=n[l++],t[i]);return e}},function(e,t,i){var n=i(7),r=i(2),s=i(66);e.exports=!n&&!r((function(){return 7!=Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a}))},function(e,t,i){var n=i(8),r=i(68),s=i(58),a=i(236),o=i(4)("toPrimitive");e.exports=function(e,t){if(!n(e)||r(e))return e;var i,l=s(e,o);if(l){if(void 0===t&&(t="default"),i=l.call(e,t),!n(i)||r(i))return i;throw TypeError("Can't convert object to primitive value")}return void 0===t&&(t="number"),a(e,t)}},function(e,t){e.exports=function(e){try{return String(e)}catch(e){return"Object"}}},function(e,t,i){var n=i(10),r=i(16),s=i(104).indexOf,a=i(49);e.exports=function(e,t){var i,o=r(e),l=0,u=[];for(i in o)!n(a,i)&&n(o,i)&&u.push(i);for(;t.length>l;)n(o,i=t[l++])&&(~s(u,i)||u.push(i));return u}},function(e,t,i){var n=i(69),r=Math.max,s=Math.min;e.exports=function(e,t){var i=n(e);return i<0?r(i+t,0):s(i,t)}},function(e,t,i){var n=i(17);e.exports=n("document","documentElement")},function(e,t,i){"use strict";var n=i(1),r=i(30),s=i(62),a=i(5),o=i(238),l=i(107),u=i(74),c=i(73),d=i(32),h=i(13),p=i(4),f=i(50),m=i(150),v=s.PROPER,g=s.CONFIGURABLE,_=m.IteratorPrototype,b=m.BUGGY_SAFARI_ITERATORS,y=p("iterator"),x=function(){return this};e.exports=function(e,t,i,s,p,m,k){o(i,t,s);var w,C,S,O=function(e){if(e===p&&P)return P;if(!b&&e in T)return T[e];switch(e){case"keys":case"values":case"entries":return function(){return new i(this,e)}}return function(){return new i(this)}},D=t+" Iterator",E=!1,T=e.prototype,$=T[y]||T["@@iterator"]||p&&T[p],P=!b&&$||O(p),j="Array"==t&&T.entries||$;if(j&&(w=l(j.call(new e)))!==Object.prototype&&w.next&&(r||l(w)===_||(u?u(w,_):a(w[y])||h(w,y,x)),c(w,D,!0,!0),r&&(f[D]=x)),v&&"values"==p&&$&&"values"!==$.name&&(!r&&g?d(T,"name","values"):(E=!0,P=function(){return $.call(this)})),p)if(C={values:O("values"),keys:m?P:O("keys"),entries:O("entries")},k)for(S in C)(b||E||!(S in T))&&h(T,S,C[S]);else n({target:t,proto:!0,forced:b||E},C);return r&&!k||T[y]===P||h(T,y,P,{name:p}),f[t]=P,C}},function(e,t,i){var n=i(10),r=i(149),s=i(26),a=i(11);e.exports=function(e,t){for(var i=r(t),o=a.f,l=s.f,u=0;un;)t.push(arguments[n++]);return x[++y]=function(){(l(e)?e:Function(e)).apply(void 0,t)},r(y),y},v=function(e){delete x[e]},f?r=function(e){g.nextTick(w(e))}:b&&b.now?r=function(e){b.now(w(e))}:_&&!p?(a=(s=new _).port2,s.port1.onmessage=C,r=c(a.postMessage,a,1)):o.addEventListener&&l(o.postMessage)&&!o.importScripts&&n&&"file:"!==n.protocol&&!u(S)?(r=S,o.addEventListener("message",C,!1)):r="onreadystatechange"in h("script")?function(e){d.appendChild(h("script")).onreadystatechange=function(){d.removeChild(this),k(e)}}:function(e){setTimeout(w(e),0)}),e.exports={set:m,clear:v}},function(e,t,i){var n=i(60);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},function(e,t,i){var n=i(9),r=i(8),s=i(161);e.exports=function(e,t){if(n(e),r(t)&&t.constructor===e)return t;var i=s.f(e);return(0,i.resolve)(t),i.promise}},function(e,t,i){"use strict";var n=i(31),r=function(e){var t,i;this.promise=new e((function(e,n){if(void 0!==t||void 0!==i)throw TypeError("Bad Promise constructor");t=e,i=n})),this.resolve=n(t),this.reject=n(i)};e.exports.f=function(e){return new r(e)}},function(e,t,i){var n=i(69),r=i(20),s=i(28),a=function(e){return function(t,i){var a,o,l=r(s(t)),u=n(i),c=l.length;return u<0||u>=c?e?"":void 0:(a=l.charCodeAt(u))<55296||a>56319||u+1===c||(o=l.charCodeAt(u+1))<56320||o>57343?e?l.charAt(u):a:e?l.slice(u,u+2):o-56320+(a-55296<<10)+65536}};e.exports={codeAt:a(!1),charAt:a(!0)}},function(e,t){e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(e,t,i){var n=i(66)("span").classList,r=n&&n.constructor&&n.constructor.prototype;e.exports=r===Object.prototype?void 0:r},function(e,t,i){var n=i(254);e.exports=function(e,t){return new(n(e))(0===t?0:t)}},function(e,t,i){var n=i(1),r=i(7),s=i(149),a=i(16),o=i(26),l=i(80);n({target:"Object",stat:!0,sham:!r},{getOwnPropertyDescriptors:function(e){for(var t,i,n=a(e),r=o.f,u=s(n),c={},d=0;u.length>d;)void 0!==(i=r(n,t=u[d++]))&&l(c,t,i);return c}})},function(e,t,i){var n=i(1),r=i(2),s=i(15),a=i(107),o=i(151);n({target:"Object",stat:!0,forced:r((function(){a(1)})),sham:!o},{getPrototypeOf:function(e){return a(s(e))}})},function(e,t,i){"use strict";var n=i(33).forEach,r=i(40)("forEach");e.exports=r?[].forEach:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}},function(e,t,i){var n=i(2);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,i){var n=i(16),r=i(45).f,s={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==s.call(e)?function(e){try{return r(e)}catch(e){return a.slice()}}(e):r(n(e))}},function(e,t,i){var n=i(4);t.f=n},function(e,t,i){var n=i(259),r=i(10),s=i(171),a=i(11).f;e.exports=function(e){var t=n.Symbol||(n.Symbol={});r(t,e)||a(t,e,{value:s.f(e)})}},function(e,t,i){var n=i(1),r=i(260);n({target:"Array",stat:!0,forced:!i(156)((function(e){Array.from(e)}))},{from:r})},function(e,t,i){i(1)({target:"Object",stat:!0,sham:!i(7)},{create:i(27)})},function(e,t){e.exports=function(e,t){for(var i=-1,n=t.length,r=e.length;++ic))return!1;var h=l.get(e),p=l.get(t);if(h&&p)return h==t&&p==e;var f=-1,m=!0,v=2&i?new n:void 0;for(l.set(e,t),l.set(t,e);++f-1&&e%1==0&&e3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return h(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return h(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return h(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return h(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return h(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return h(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return h(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return h(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return h(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return h(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return h(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+h(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},_={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+o,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var i=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?i-1:i)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",u],ddd:[o,u],MMM:[o,d("monthNamesShort")],MMMM:[o,d("monthNames")],a:[o,function(e,t,i){var n=t.toLowerCase();n===i.amPm[0]?e.isPm=!1:n===i.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var i,n=(t+"").match(/([+-]|\d\d)/gi);n&&(i=60*n[1]+parseInt(n[2],10),e.timezoneOffset="+"===n[0]?i:-i)}]};_.dd=_.d,_.dddd=_.ddd,_.DD=_.D,_.mm=_.m,_.hh=_.H=_.HH=_.h,_.MM=_.M,_.ss=_.s,_.A=_.a,s.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},s.format=function(e,t,i){var n=i||s.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=s.masks[t]||t||s.masks.default;var r=[];return(t=(t=t.replace(l,(function(e,t){return r.push(t),"@@@"}))).replace(a,(function(t){return t in g?g[t](e,n):t.slice(1,t.length-1)}))).replace(/@@@/g,(function(){return r.shift()}))},s.parse=function(e,t,i){var n=i||s.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=s.masks[t]||t,e.length>1e3)return null;var r={},o=[],u=[];t=t.replace(l,(function(e,t){return u.push(t),"@@@"}));var c,d=(c=t,c.replace(/[|\\{()[^$+*?.-]/g,"\\$&")).replace(a,(function(e){if(_[e]){var t=_[e];return o.push(t[1]),"("+t[0]+")"}return e}));d=d.replace(/@@@/g,(function(){return u.shift()}));var h=e.match(new RegExp(d,"i"));if(!h)return null;for(var p=1;p0?this._openTimer=setTimeout((function(){t._openTimer=null,t.doOpen(i)}),n):this.doOpen(i)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,i=e.modal,n=e.zIndex;if(n&&(s.default.zIndex=n),i&&(this._closing&&(s.default.closeModal(this._popupId),this._closing=!1),s.default.openModal(this._popupId,s.default.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!(0,o.hasClass)(document.body,"el-popup-parent--hidden"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt((0,o.getStyle)(document.body,"paddingRight"),10)),c=(0,a.default)();var r=document.documentElement.clientHeight0&&(r||"scroll"===l)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+c+"px"),(0,o.addClass)(document.body,"el-popup-parent--hidden")}"static"===getComputedStyle(t).position&&(t.style.position="absolute"),t.style.zIndex=s.default.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout((function(){e._closeTimer=null,e.doClose()}),t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){s.default.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,(0,o.removeClass)(document.body,"el-popup-parent--hidden")),this.withoutHiddenClass=!0}}},t.PopupManager=s.default},function(e,t,i){"use strict";t.__esModule=!0;i(19);t.default={mounted:function(){},methods:{getMigratingConfig:function(){return{props:{},events:{}}}}}},function(e,t,i){"use strict";t.__esModule=!0;var n,r=i(0),s=(n=r)&&n.__esModule?n:{default:n},a=i(25);var o=[],l="@@clickoutsideContext",u=void 0,c=0;function d(e,t,i){return function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(i&&i.context&&n.target&&r.target)||e.contains(n.target)||e.contains(r.target)||e===n.target||i.context.popperElm&&(i.context.popperElm.contains(n.target)||i.context.popperElm.contains(r.target))||(t.expression&&e[l].methodName&&i.context[e[l].methodName]?i.context[e[l].methodName]():e[l].bindingFn&&e[l].bindingFn())}}!s.default.prototype.$isServer&&(0,a.on)(document,"mousedown",(function(e){return u=e})),!s.default.prototype.$isServer&&(0,a.on)(document,"mouseup",(function(e){o.forEach((function(t){return t[l].documentHandler(e,u)}))})),t.default={bind:function(e,t,i){o.push(e);var n=c++;e[l]={id:n,documentHandler:d(e,t,i),methodName:t.expression,bindingFn:t.value}},update:function(e,t,i){e[l].documentHandler=d(e,t,i),e[l].methodName=t.expression,e[l].bindingFn=t.value},unbind:function(e){for(var t=o.length,i=0;i-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,r=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var s=e._i(i,null);n.checked?s<0&&(e.model=i.concat([null])):s>-1&&(e.model=i.slice(0,s).concat(i.slice(s+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=e.label,a=e._i(i,s);n.checked?a<0&&(e.model=i.concat([s])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};n._withStripped=!0;var r=i(4),s={name:"ElCheckbox",mixins:[i.n(r).a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick((function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])}))}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},a=i(0),o=Object(a.a)(s,n,[],!1,null,null,null);o.options.__file="packages/checkbox/src/checkbox.vue";var l=o.exports;l.install=function(e){e.component(l.name,l)};t.default=l},4:function(e,t){e.exports=i(36)}})},function(e,t){var i=/^(attrs|props|on|nativeOn|class|style|hook)$/;function n(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce((function(e,t){var r,s,a,o,l;for(a in t)if(r=e[a],s=t[a],r&&i.test(a))if("class"===a&&("string"==typeof r&&(l=r,e[a]=r={},r[l]=!0),"string"==typeof s&&(l=s,t[a]=s={},s[l]=!0)),"on"===a||"nativeOn"===a||"hook"===a)for(o in s)r[o]=n(r[o],s[o]);else if(Array.isArray(r))e[a]=r.concat(s);else if(Array.isArray(s))e[a]=[r].concat(s);else for(o in s)r[o]=s[o];else e[a]=t[a];return e}),{})}},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=130)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},130:function(e,t,i){"use strict";i.r(t);var n={name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return-1!==["dark","light","plain"].indexOf(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,i=this.tagSize,n=this.hit,r=this.effect,s=e("span",{class:["el-tag",t?"el-tag--"+t:"",i?"el-tag--"+i:"",r?"el-tag--"+r:"",n&&"is-hit"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?s:e("transition",{attrs:{name:"el-zoom-in-center"}},[s])}},r=i(0),s=Object(r.a)(n,void 0,void 0,!1,null,null,null);s.options.__file="packages/tag/src/tag.vue";var a=s.exports;a.install=function(e){e.component(a.name,a)};t.default=a}})},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6));t.default=function(e,t,i,r,s,a){!e.required||i.hasOwnProperty(e.field)&&!n.isEmptyValue(t,a||e.type)||r.push(n.format(s.messages.required,e.fullField))}},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=108)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},108:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[i("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[i("span",{staticClass:"el-radio__inner"}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1",autocomplete:"off"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),i("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};n._withStripped=!0;var r=i(4),s={name:"ElRadio",mixins:[i.n(r).a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick((function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)}))}}},a=i(0),o=Object(a.a)(s,n,[],!1,null,null,null);o.options.__file="packages/radio/src/radio.vue";var l=o.exports;l.install=function(e){e.component(l.name,l)};t.default=l},4:function(e,t){e.exports=i(36)}})},function(e,t,i){},function(e,t,i){i(1)({target:"Object",stat:!0},{setPrototypeOf:i(74)})},function(e,t,i){var n=i(1),r=i(17),s=i(157),a=i(9),o=i(8),l=i(27),u=i(418),c=i(2),d=r("Reflect","construct"),h=c((function(){function e(){}return!(d((function(){}),[],e)instanceof e)})),p=!c((function(){d((function(){}))})),f=h||p;n({target:"Reflect",stat:!0,forced:f,sham:f},{construct:function(e,t){s(e),a(t);var i=arguments.length<3?e:s(arguments[2]);if(p&&!h)return d(e,t,i);if(e==i){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var n=[null];return n.push.apply(n,t),new(u.apply(e,n))}var r=i.prototype,c=l(o(r)?r:Object.prototype),f=Function.apply.call(e,c,t);return o(f)?f:c}})},function(e,t,i){},function(e,t,i){},function(e,t,i){var n=i(263),r=i(268),s=i(338),a=i(346),o=i(355),l=i(232),u=s((function(e){var t=l(e);return o(t)&&(t=void 0),a(n(e,1,o,!0),r(t,2))}));e.exports=u},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=45)}([function(e,t){e.exports=i(360)},function(e,t){e.exports=i(25)},function(e,t){e.exports=i(19)},function(e,t){e.exports=i(36)},function(e,t){e.exports=i(121)},function(e,t){e.exports=i(88)},function(e,t){e.exports=i(0)},function(e,t){e.exports=i(89)},function(e,t){e.exports=i(123)},function(e,t){e.exports=i(199)},function(e,t){e.exports=i(200)},function(e,t){e.exports=i(198)},function(e,t){e.exports=i(120)},function(e,t){e.exports=i(366)},function(e,t){e.exports=i(124)},function(e,t){e.exports=i(197)},function(e,t){e.exports=i(91)},function(e,t){e.exports=i(201)},function(e,t){e.exports=i(126)},function(e,t){e.exports=i(90)},function(e,t){e.exports=i(196)},function(e,t){e.exports=i(368)},function(e,t){e.exports=i(369)},function(e,t){e.exports=i(127)},function(e,t){e.exports=i(202)},function(e,t){e.exports=i(125)},function(e,t){e.exports=i(370)},function(e,t){e.exports=i(128)},function(e,t){e.exports=i(371)},function(e,t){e.exports=i(203)},function(e,t){e.exports=i(122)},function(e,t){e.exports=i(372)},function(e,t){e.exports=i(373)},function(e,t){e.exports=i(374)},function(e,t){e.exports=i(129)},function(e,t){e.exports=i(375)},function(e,t){e.exports=i(376)},function(e,t){e.exports=i(377)},function(e,t){e.exports=i(378)},function(e,t){e.exports=i(383)},function(e,t){e.exports=i(384)},function(e,t){e.exports=i(406)},function(e,t){e.exports=i(407)},function(e,t){e.exports=i(205)},function(e,t){e.exports=i(408)},function(e,t,i){e.exports=i(46)},function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ul",{staticClass:"el-pager",on:{click:e.onPagerClick}},[e.pageCount>0?i("li",{staticClass:"number",class:{active:1===e.currentPage,disabled:e.disabled}},[e._v("1")]):e._e(),e.showPrevMore?i("li",{staticClass:"el-icon more btn-quickprev",class:[e.quickprevIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("left")},mouseleave:function(t){e.quickprevIconClass="el-icon-more"}}}):e._e(),e._l(e.pagers,(function(t){return i("li",{key:t,staticClass:"number",class:{active:e.currentPage===t,disabled:e.disabled}},[e._v(e._s(t))])})),e.showNextMore?i("li",{staticClass:"el-icon more btn-quicknext",class:[e.quicknextIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("right")},mouseleave:function(t){e.quicknextIconClass="el-icon-more"}}}):e._e(),e.pageCount>1?i("li",{staticClass:"number",class:{active:e.currentPage===e.pageCount,disabled:e.disabled}},[e._v(e._s(e.pageCount))]):e._e()],2)};function r(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}n._withStripped=!0;var s=r({name:"ElPager",props:{currentPage:Number,pageCount:Number,pagerCount:Number,disabled:Boolean},watch:{showPrevMore:function(e){e||(this.quickprevIconClass="el-icon-more")},showNextMore:function(e){e||(this.quicknextIconClass="el-icon-more")}},methods:{onPagerClick:function(e){var t=e.target;if("UL"!==t.tagName&&!this.disabled){var i=Number(e.target.textContent),n=this.pageCount,r=this.currentPage,s=this.pagerCount-2;-1!==t.className.indexOf("more")&&(-1!==t.className.indexOf("quickprev")?i=r-s:-1!==t.className.indexOf("quicknext")&&(i=r+s)),isNaN(i)||(i<1&&(i=1),i>n&&(i=n)),i!==r&&this.$emit("change",i)}},onMouseenter:function(e){this.disabled||("left"===e?this.quickprevIconClass="el-icon-d-arrow-left":this.quicknextIconClass="el-icon-d-arrow-right")}},computed:{pagers:function(){var e=this.pagerCount,t=(e-1)/2,i=Number(this.currentPage),n=Number(this.pageCount),r=!1,s=!1;n>e&&(i>e-t&&(r=!0),i4&&e<22&&e%2==1},default:7},currentPage:{type:Number,default:1},layout:{default:"prev, pager, next, jumper, ->, total"},pageSizes:{type:Array,default:function(){return[10,20,30,40,50,100]}},popperClass:String,prevText:String,nextText:String,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean},data:function(){return{internalCurrentPage:1,internalPageSize:0,lastEmittedPage:-1,userChangePageSize:!1}},render:function(e){var t=this.layout;if(!t)return null;if(this.hideOnSinglePage&&(!this.internalPageCount||1===this.internalPageCount))return null;var i=e("div",{class:["el-pagination",{"is-background":this.background,"el-pagination--small":this.small}]}),n={prev:e("prev"),jumper:e("jumper"),pager:e("pager",{attrs:{currentPage:this.internalCurrentPage,pageCount:this.internalPageCount,pagerCount:this.pagerCount,disabled:this.disabled},on:{change:this.handleCurrentChange}}),next:e("next"),sizes:e("sizes",{attrs:{pageSizes:this.pageSizes}}),slot:e("slot",[this.$slots.default?this.$slots.default:""]),total:e("total")},r=t.split(",").map((function(e){return e.trim()})),s=e("div",{class:"el-pagination__rightwrapper"}),a=!1;return i.children=i.children||[],s.children=s.children||[],r.forEach((function(e){"->"!==e?a?s.children.push(n[e]):i.children.push(n[e]):a=!0})),a&&i.children.unshift(s),i},components:{Prev:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage<=1},class:"btn-prev",on:{click:this.$parent.prev}},[this.$parent.prevText?e("span",[this.$parent.prevText]):e("i",{class:"el-icon el-icon-arrow-left"})])}},Next:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage===this.$parent.internalPageCount||0===this.$parent.internalPageCount},class:"btn-next",on:{click:this.$parent.next}},[this.$parent.nextText?e("span",[this.$parent.nextText]):e("i",{class:"el-icon el-icon-arrow-right"})])}},Sizes:{mixins:[f.a],props:{pageSizes:Array},watch:{pageSizes:{immediate:!0,handler:function(e,t){Object(m.valueEquals)(e,t)||Array.isArray(e)&&(this.$parent.internalPageSize=e.indexOf(this.$parent.pageSize)>-1?this.$parent.pageSize:this.pageSizes[0])}}},render:function(e){var t=this;return e("span",{class:"el-pagination__sizes"},[e("el-select",{attrs:{value:this.$parent.internalPageSize,popperClass:this.$parent.popperClass||"",size:"mini",disabled:this.$parent.disabled},on:{input:this.handleChange}},[this.pageSizes.map((function(i){return e("el-option",{attrs:{value:i,label:i+t.t("el.pagination.pagesize")}})}))])])},components:{ElSelect:l.a,ElOption:c.a},methods:{handleChange:function(e){e!==this.$parent.internalPageSize&&(this.$parent.internalPageSize=e=parseInt(e,10),this.$parent.userChangePageSize=!0,this.$parent.$emit("update:pageSize",e),this.$parent.$emit("size-change",e))}}},Jumper:{mixins:[f.a],components:{ElInput:h.a},data:function(){return{userInput:null}},watch:{"$parent.internalCurrentPage":function(){this.userInput=null}},methods:{handleKeyup:function(e){var t=e.keyCode,i=e.target;13===t&&this.handleChange(i.value)},handleInput:function(e){this.userInput=e},handleChange:function(e){this.$parent.internalCurrentPage=this.$parent.getValidCurrentPage(e),this.$parent.emitChange(),this.userInput=null}},render:function(e){return e("span",{class:"el-pagination__jump"},[this.t("el.pagination.goto"),e("el-input",{class:"el-pagination__editor is-in-pagination",attrs:{min:1,max:this.$parent.internalPageCount,value:null!==this.userInput?this.userInput:this.$parent.internalCurrentPage,type:"number",disabled:this.$parent.disabled},nativeOn:{keyup:this.handleKeyup},on:{input:this.handleInput,change:this.handleChange}}),this.t("el.pagination.pageClassifier")])}},Total:{mixins:[f.a],render:function(e){return"number"==typeof this.$parent.total?e("span",{class:"el-pagination__total"},[this.t("el.pagination.total",{total:this.$parent.total})]):""}},Pager:a},methods:{handleCurrentChange:function(e){this.internalCurrentPage=this.getValidCurrentPage(e),this.userChangePageSize=!0,this.emitChange()},prev:function(){if(!this.disabled){var e=this.internalCurrentPage-1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("prev-click",this.internalCurrentPage),this.emitChange()}},next:function(){if(!this.disabled){var e=this.internalCurrentPage+1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("next-click",this.internalCurrentPage),this.emitChange()}},getValidCurrentPage:function(e){e=parseInt(e,10);var t=void 0;return"number"==typeof this.internalPageCount?e<1?t=1:e>this.internalPageCount&&(t=this.internalPageCount):(isNaN(e)||e<1)&&(t=1),(void 0===t&&isNaN(e)||0===t)&&(t=1),void 0===t?e:t},emitChange:function(){var e=this;this.$nextTick((function(){(e.internalCurrentPage!==e.lastEmittedPage||e.userChangePageSize)&&(e.$emit("current-change",e.internalCurrentPage),e.lastEmittedPage=e.internalCurrentPage,e.userChangePageSize=!1)}))}},computed:{internalPageCount:function(){return"number"==typeof this.total?Math.max(1,Math.ceil(this.total/this.internalPageSize)):"number"==typeof this.pageCount?Math.max(1,this.pageCount):null}},watch:{currentPage:{immediate:!0,handler:function(e){this.internalCurrentPage=this.getValidCurrentPage(e)}},pageSize:{immediate:!0,handler:function(e){this.internalPageSize=isNaN(e)?10:e}},internalCurrentPage:{immediate:!0,handler:function(e){this.$emit("update:currentPage",e),this.lastEmittedPage=-1}},internalPageCount:function(e){var t=this.internalCurrentPage;e>0&&0===t?this.internalCurrentPage=1:t>e&&(this.internalCurrentPage=0===e?1:e,this.userChangePageSize&&this.emitChange()),this.userChangePageSize=!1}},install:function(e){e.component(v.name,v)}},g=v,_=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"dialog-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-dialog__wrapper",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{key:e.key,ref:"dialog",class:["el-dialog",{"is-fullscreen":e.fullscreen,"el-dialog--center":e.center},e.customClass],style:e.style,attrs:{role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"}},[i("div",{staticClass:"el-dialog__header"},[e._t("title",[i("span",{staticClass:"el-dialog__title"},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-dialog__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:e.handleClose}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2),e.rendered?i("div",{staticClass:"el-dialog__body"},[e._t("default")],2):e._e(),e.$slots.footer?i("div",{staticClass:"el-dialog__footer"},[e._t("footer")],2):e._e()])])])};_._withStripped=!0;var b=i(11),y=i.n(b),x=i(9),k=i.n(x),w=i(3),C=i.n(w),S=r({name:"ElDialog",mixins:[y.a,C.a,k.a],props:{title:{type:String,default:""},modal:{type:Boolean,default:!0},modalAppendToBody:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},width:String,fullscreen:Boolean,customClass:{type:String,default:""},top:{type:String,default:"15vh"},beforeClose:Function,center:{type:Boolean,default:!1},destroyOnClose:Boolean},data:function(){return{closed:!1,key:0}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.$el.addEventListener("scroll",this.updatePopper),this.$nextTick((function(){t.$refs.dialog.scrollTop=0})),this.appendToBody&&document.body.appendChild(this.$el)):(this.$el.removeEventListener("scroll",this.updatePopper),this.closed||this.$emit("close"),this.destroyOnClose&&this.$nextTick((function(){t.key++})))}},computed:{style:function(){var e={};return this.fullscreen||(e.marginTop=this.top,this.width&&(e.width=this.width)),e}},methods:{getMigratingConfig:function(){return{props:{size:"size is removed."}}},handleWrapperClick:function(){this.closeOnClickModal&&this.handleClose()},handleClose:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),this.closed=!0)},updatePopper:function(){this.broadcast("ElSelectDropdown","updatePopper"),this.broadcast("ElDropdownMenu","updatePopper")},afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},_,[],!1,null,null,null);S.options.__file="packages/dialog/src/component.vue";var O=S.exports;O.install=function(e){e.component(O.name,O)};var D=O,E=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.close,expression:"close"}],staticClass:"el-autocomplete",attrs:{"aria-haspopup":"listbox",role:"combobox","aria-expanded":e.suggestionVisible,"aria-owns":e.id}},[i("el-input",e._b({ref:"input",on:{input:e.handleInput,change:e.handleChange,focus:e.handleFocus,blur:e.handleBlur,clear:e.handleClear},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex-1)},function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex+1)},function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleKeyEnter(t)},function(t){return!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:e.close(t)}]}},"el-input",[e.$props,e.$attrs],!1),[e.$slots.prepend?i("template",{slot:"prepend"},[e._t("prepend")],2):e._e(),e.$slots.append?i("template",{slot:"append"},[e._t("append")],2):e._e(),e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),e.$slots.suffix?i("template",{slot:"suffix"},[e._t("suffix")],2):e._e()],2),i("el-autocomplete-suggestions",{ref:"suggestions",class:[e.popperClass?e.popperClass:""],attrs:{"visible-arrow":"","popper-options":e.popperOptions,"append-to-body":e.popperAppendToBody,placement:e.placement,id:e.id}},e._l(e.suggestions,(function(t,n){return i("li",{key:n,class:{highlighted:e.highlightedIndex===n},attrs:{id:e.id+"-item-"+n,role:"option","aria-selected":e.highlightedIndex===n},on:{click:function(i){e.select(t)}}},[e._t("default",[e._v("\n "+e._s(t[e.valueKey])+"\n ")],{item:t})],2)})),0)],1)};E._withStripped=!0;var T=i(16),$=i.n(T),P=i(10),j=i.n(P),M=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-autocomplete-suggestion el-popper",class:{"is-loading":!e.parent.hideLoading&&e.parent.loading},style:{width:e.dropdownWidth},attrs:{role:"region"}},[i("el-scrollbar",{attrs:{tag:"ul","wrap-class":"el-autocomplete-suggestion__wrap","view-class":"el-autocomplete-suggestion__list"}},[!e.parent.hideLoading&&e.parent.loading?i("li",[i("i",{staticClass:"el-icon-loading"})]):e._t("default")],2)],1)])};M._withStripped=!0;var I=i(5),A=i.n(I),N=i(18),L=i.n(N),F=r({components:{ElScrollbar:L.a},mixins:[A.a,C.a],componentName:"ElAutocompleteSuggestions",data:function(){return{parent:this.$parent,dropdownWidth:""}},props:{options:{default:function(){return{gpuAcceleration:!1}}},id:String},methods:{select:function(e){this.dispatch("ElAutocomplete","item-click",e)}},updated:function(){var e=this;this.$nextTick((function(t){e.popperJS&&e.updatePopper()}))},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$refs.input.$refs.input||this.$parent.$refs.input.$refs.textarea,this.referenceList=this.$el.querySelector(".el-autocomplete-suggestion__list"),this.referenceList.setAttribute("role","listbox"),this.referenceList.setAttribute("id",this.id)},created:function(){var e=this;this.$on("visible",(function(t,i){e.dropdownWidth=i+"px",e.showPopper=t}))}},M,[],!1,null,null,null);F.options.__file="packages/autocomplete/src/autocomplete-suggestions.vue";var V=F.exports,z=i(23),R=i.n(z),B=r({name:"ElAutocomplete",mixins:[C.a,R()("input"),k.a],inheritAttrs:!1,componentName:"ElAutocomplete",components:{ElInput:h.a,ElAutocompleteSuggestions:V},directives:{Clickoutside:j.a},props:{valueKey:{type:String,default:"value"},popperClass:String,popperOptions:Object,placeholder:String,clearable:{type:Boolean,default:!1},disabled:Boolean,name:String,size:String,value:String,maxlength:Number,minlength:Number,autofocus:Boolean,fetchSuggestions:Function,triggerOnFocus:{type:Boolean,default:!0},customItem:String,selectWhenUnmatched:{type:Boolean,default:!1},prefixIcon:String,suffixIcon:String,label:String,debounce:{type:Number,default:300},placement:{type:String,default:"bottom-start"},hideLoading:Boolean,popperAppendToBody:{type:Boolean,default:!0},highlightFirstItem:{type:Boolean,default:!1}},data:function(){return{activated:!1,suggestions:[],loading:!1,highlightedIndex:-1,suggestionDisabled:!1}},computed:{suggestionVisible:function(){var e=this.suggestions;return(Array.isArray(e)&&e.length>0||this.loading)&&this.activated},id:function(){return"el-autocomplete-"+Object(m.generateId)()}},watch:{suggestionVisible:function(e){var t=this.getInput();t&&this.broadcast("ElAutocompleteSuggestions","visible",[e,t.offsetWidth])}},methods:{getMigratingConfig:function(){return{props:{"custom-item":"custom-item is removed, use scoped slot instead.",props:"props is removed, use value-key instead."}}},getData:function(e){var t=this;this.suggestionDisabled||(this.loading=!0,this.fetchSuggestions(e,(function(e){t.loading=!1,t.suggestionDisabled||(Array.isArray(e)?(t.suggestions=e,t.highlightedIndex=t.highlightFirstItem?0:-1):console.error("[Element Error][Autocomplete]autocomplete suggestions must be an array"))})))},handleInput:function(e){if(this.$emit("input",e),this.suggestionDisabled=!1,!this.triggerOnFocus&&!e)return this.suggestionDisabled=!0,void(this.suggestions=[]);this.debouncedGetData(e)},handleChange:function(e){this.$emit("change",e)},handleFocus:function(e){this.activated=!0,this.$emit("focus",e),this.triggerOnFocus&&this.debouncedGetData(this.value)},handleBlur:function(e){this.$emit("blur",e)},handleClear:function(){this.activated=!1,this.$emit("clear")},close:function(e){this.activated=!1},handleKeyEnter:function(e){var t=this;this.suggestionVisible&&this.highlightedIndex>=0&&this.highlightedIndex=this.suggestions.length&&(e=this.suggestions.length-1);var t=this.$refs.suggestions.$el.querySelector(".el-autocomplete-suggestion__wrap"),i=t.querySelectorAll(".el-autocomplete-suggestion__list li")[e],n=t.scrollTop,r=i.offsetTop;r+i.scrollHeight>n+t.clientHeight&&(t.scrollTop+=i.scrollHeight),r=0&&this.resetTabindex(this.triggerElm),clearTimeout(this.timeout),this.timeout=setTimeout((function(){e.visible=!1}),"click"===this.trigger?0:this.hideTimeout))},handleClick:function(){this.disabled||(this.visible?this.hide():this.show())},handleTriggerKeyDown:function(e){var t=e.keyCode;[38,40].indexOf(t)>-1?(this.removeTabindex(),this.resetTabindex(this.menuItems[0]),this.menuItems[0].focus(),e.preventDefault(),e.stopPropagation()):13===t?this.handleClick():[9,27].indexOf(t)>-1&&this.hide()},handleItemKeyDown:function(e){var t=e.keyCode,i=e.target,n=this.menuItemsArray.indexOf(i),r=this.menuItemsArray.length-1,s=void 0;[38,40].indexOf(t)>-1?(s=38===t?0!==n?n-1:0:n-1&&(this.hide(),this.triggerElmFocus())},resetTabindex:function(e){this.removeTabindex(),e.setAttribute("tabindex","0")},removeTabindex:function(){this.triggerElm.setAttribute("tabindex","-1"),this.menuItemsArray.forEach((function(e){e.setAttribute("tabindex","-1")}))},initAria:function(){this.dropdownElm.setAttribute("id",this.listId),this.triggerElm.setAttribute("aria-haspopup","list"),this.triggerElm.setAttribute("aria-controls",this.listId),this.splitButton||(this.triggerElm.setAttribute("role","button"),this.triggerElm.setAttribute("tabindex",this.tabindex),this.triggerElm.setAttribute("class",(this.triggerElm.getAttribute("class")||"")+" el-dropdown-selfdefine"))},initEvent:function(){var e=this,t=this.trigger,i=this.show,n=this.hide,r=this.handleClick,s=this.splitButton,a=this.handleTriggerKeyDown,o=this.handleItemKeyDown;this.triggerElm=s?this.$refs.trigger.$el:this.$slots.default[0].elm;var l=this.dropdownElm;this.triggerElm.addEventListener("keydown",a),l.addEventListener("keydown",o,!0),s||(this.triggerElm.addEventListener("focus",(function(){e.focusing=!0})),this.triggerElm.addEventListener("blur",(function(){e.focusing=!1})),this.triggerElm.addEventListener("click",(function(){e.focusing=!1}))),"hover"===t?(this.triggerElm.addEventListener("mouseenter",i),this.triggerElm.addEventListener("mouseleave",n),l.addEventListener("mouseenter",i),l.addEventListener("mouseleave",n)):"click"===t&&this.triggerElm.addEventListener("click",r)},handleMenuItemClick:function(e,t){this.hideOnClick&&(this.visible=!1),this.$emit("command",e,t)},triggerElmFocus:function(){this.triggerElm.focus&&this.triggerElm.focus()},initDomOperation:function(){this.dropdownElm=this.popperElm,this.menuItems=this.dropdownElm.querySelectorAll("[tabindex='-1']"),this.menuItemsArray=[].slice.call(this.menuItems),this.initEvent(),this.initAria()}},render:function(e){var t=this,i=this.hide,n=this.splitButton,r=this.type,s=this.dropdownSize,a=this.disabled,o=null;if(n)o=e("el-button-group",[e("el-button",{attrs:{type:r,size:s,disabled:a},nativeOn:{click:function(e){t.$emit("click",e),i()}}},[this.$slots.default]),e("el-button",{ref:"trigger",attrs:{type:r,size:s,disabled:a},class:"el-dropdown__caret-button"},[e("i",{class:"el-dropdown__icon el-icon-arrow-down"})])]);else{var l=(o=this.$slots.default)[0].data||{},u=l.attrs,c=void 0===u?{}:u;a&&!c.disabled&&(c.disabled=!0,l.attrs=c)}var d=a?null:this.$slots.dropdown;return e("div",{class:"el-dropdown",directives:[{name:"clickoutside",value:i}],attrs:{"aria-disabled":a}},[o,d])}},void 0,void 0,!1,null,null,null);K.options.__file="packages/dropdown/src/dropdown.vue";var X=K.exports;X.install=function(e){e.component(X.name,X)};var Z=X,Q=function(){var e=this.$createElement,t=this._self._c||e;return t("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":this.doDestroy}},[t("ul",{directives:[{name:"show",rawName:"v-show",value:this.showPopper,expression:"showPopper"}],staticClass:"el-dropdown-menu el-popper",class:[this.size&&"el-dropdown-menu--"+this.size]},[this._t("default")],2)])};Q._withStripped=!0;var J=r({name:"ElDropdownMenu",componentName:"ElDropdownMenu",mixins:[A.a],props:{visibleArrow:{type:Boolean,default:!0},arrowOffset:{type:Number,default:0}},data:function(){return{size:this.dropdown.dropdownSize}},inject:["dropdown"],created:function(){var e=this;this.$on("updatePopper",(function(){e.showPopper&&e.updatePopper()})),this.$on("visible",(function(t){e.showPopper=t}))},mounted:function(){this.dropdown.popperElm=this.popperElm=this.$el,this.referenceElm=this.dropdown.$el,this.dropdown.initDomOperation()},watch:{"dropdown.placement":{immediate:!0,handler:function(e){this.currentPlacement=e}}}},Q,[],!1,null,null,null);J.options.__file="packages/dropdown/src/dropdown-menu.vue";var ee=J.exports;ee.install=function(e){e.component(ee.name,ee)};var te=ee,ie=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-dropdown-menu__item",class:{"is-disabled":e.disabled,"el-dropdown-menu__item--divided":e.divided},attrs:{"aria-disabled":e.disabled,tabindex:e.disabled?null:-1},on:{click:e.handleClick}},[e.icon?i("i",{class:e.icon}):e._e(),e._t("default")],2)};ie._withStripped=!0;var ne=r({name:"ElDropdownItem",mixins:[C.a],props:{command:{},disabled:Boolean,divided:Boolean,icon:String},methods:{handleClick:function(e){this.dispatch("ElDropdown","menu-item-click",[this.command,this])}}},ie,[],!1,null,null,null);ne.options.__file="packages/dropdown/src/dropdown-item.vue";var re=ne.exports;re.install=function(e){e.component(re.name,re)};var se=re,ae=ae||{};ae.Utils=ae.Utils||{},ae.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var i=e.childNodes[t];if(ae.Utils.attemptFocus(i)||ae.Utils.focusLastDescendant(i))return!0}return!1},ae.Utils.attemptFocus=function(e){if(!ae.Utils.isFocusable(e))return!1;ae.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return ae.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},ae.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},ae.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),r=arguments.length,s=Array(r>2?r-2:0),a=2;a=0;t--)e.splice(t,0,e[t]);e=e.join("")}return/^[0-9a-fA-F]{6}$/.test(e)?{red:parseInt(e.slice(0,2),16),green:parseInt(e.slice(2,4),16),blue:parseInt(e.slice(4,6),16)}:{red:255,green:255,blue:255}},mixColor:function(e,t){var i=this.getColorChannels(e),n=i.red,r=i.green,s=i.blue;return t>0?(n*=1-t,r*=1-t,s*=1-t):(n+=(255-n)*t,r+=(255-r)*t,s+=(255-s)*t),"rgb("+Math.round(n)+", "+Math.round(r)+", "+Math.round(s)+")"},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},openMenu:function(e,t){var i=this.openedMenus;-1===i.indexOf(e)&&(this.uniqueOpened&&(this.openedMenus=i.filter((function(e){return-1!==t.indexOf(e)}))),this.openedMenus.push(e))},closeMenu:function(e){var t=this.openedMenus.indexOf(e);-1!==t&&this.openedMenus.splice(t,1)},handleSubmenuClick:function(e){var t=e.index,i=e.indexPath;-1!==this.openedMenus.indexOf(t)?(this.closeMenu(t),this.$emit("close",t,i)):(this.openMenu(t,i),this.$emit("open",t,i))},handleItemClick:function(e){var t=this,i=e.index,n=e.indexPath,r=this.activeIndex,s=null!==e.index;s&&(this.activeIndex=e.index),this.$emit("select",i,n,e),("horizontal"===this.mode||this.collapse)&&(this.openedMenus=[]),this.router&&s&&this.routeToItem(e,(function(e){if(t.activeIndex=r,e){if("NavigationDuplicated"===e.name)return;console.error(e)}}))},initOpenedMenu:function(){var e=this,t=this.activeIndex,i=this.items[t];i&&"horizontal"!==this.mode&&!this.collapse&&i.indexPath.forEach((function(t){var i=e.submenus[t];i&&e.openMenu(t,i.indexPath)}))},routeToItem:function(e,t){var i=e.route||e.index;try{this.$router.push(i,(function(){}),t)}catch(e){console.error(e)}},open:function(e){var t=this,i=this.submenus[e.toString()].indexPath;i.forEach((function(e){return t.openMenu(e,i)}))},close:function(e){this.closeMenu(e)}},mounted:function(){this.initOpenedMenu(),this.$on("item-click",this.handleItemClick),this.$on("submenu-click",this.handleSubmenuClick),"horizontal"===this.mode&&new pe(this.$el),this.$watch("items",this.updateActiveIndex)}},void 0,void 0,!1,null,null,null);me.options.__file="packages/menu/src/menu.vue";var ve=me.exports;ve.install=function(e){e.component(ve.name,ve)};var ge=ve,_e=i(21),be=i.n(_e),ye={inject:["rootMenu"],computed:{indexPath:function(){for(var e=[this.index],t=this.$parent;"ElMenu"!==t.$options.componentName;)t.index&&e.unshift(t.index),t=t.$parent;return e},parentMenu:function(){for(var e=this.$parent;e&&-1===["ElMenu","ElSubmenu"].indexOf(e.$options.componentName);)e=e.$parent;return e},paddingStyle:function(){if("vertical"!==this.rootMenu.mode)return{};var e=20,t=this.$parent;if(this.rootMenu.collapse)e=20;else for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return{paddingLeft:e+"px"}}}},xe={props:{transformOrigin:{type:[Boolean,String],default:!1},offset:A.a.props.offset,boundariesPadding:A.a.props.boundariesPadding,popperOptions:A.a.props.popperOptions},data:A.a.data,methods:A.a.methods,beforeDestroy:A.a.beforeDestroy,deactivated:A.a.deactivated},ke=r({name:"ElSubmenu",componentName:"ElSubmenu",mixins:[ye,C.a,xe],components:{ElCollapseTransition:be.a},props:{index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0}},data:function(){return{popperJS:null,timeout:null,items:{},submenus:{},mouseInChild:!1}},watch:{opened:function(e){var t=this;this.isMenuPopup&&this.$nextTick((function(e){t.updatePopper()}))}},computed:{appendToBody:function(){return void 0===this.popperAppendToBody?this.isFirstLevel:this.popperAppendToBody},menuTransitionName:function(){return this.rootMenu.collapse?"el-zoom-in-left":"el-zoom-in-top"},opened:function(){return this.rootMenu.openedMenus.indexOf(this.index)>-1},active:function(){var e=!1,t=this.submenus,i=this.items;return Object.keys(i).forEach((function(t){i[t].active&&(e=!0)})),Object.keys(t).forEach((function(i){t[i].active&&(e=!0)})),e},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},isMenuPopup:function(){return this.rootMenu.isMenuPopup},titleStyle:function(){return"horizontal"!==this.mode?{color:this.textColor}:{borderBottomColor:this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent",color:this.active?this.activeTextColor:this.textColor}},isFirstLevel:function(){for(var e=!0,t=this.$parent;t&&t!==this.rootMenu;){if(["ElSubmenu","ElMenuItemGroup"].indexOf(t.$options.componentName)>-1){e=!1;break}t=t.$parent}return e}},methods:{handleCollapseToggle:function(e){e?this.initPopper():this.doDestroy()},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},handleClick:function(){var e=this.rootMenu,t=this.disabled;"hover"===e.menuTrigger&&"horizontal"===e.mode||e.collapse&&"vertical"===e.mode||t||this.dispatch("ElMenu","submenu-click",this)},handleMouseenter:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.showTimeout;if("ActiveXObject"in window||"focus"!==e.type||e.relatedTarget){var n=this.rootMenu,r=this.disabled;"click"===n.menuTrigger&&"horizontal"===n.mode||!n.collapse&&"vertical"===n.mode||r||(this.dispatch("ElSubmenu","mouse-enter-child"),clearTimeout(this.timeout),this.timeout=setTimeout((function(){t.rootMenu.openMenu(t.index,t.indexPath)}),i),this.appendToBody&&this.$parent.$el.dispatchEvent(new MouseEvent("mouseenter")))}},handleMouseleave:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.rootMenu;"click"===i.menuTrigger&&"horizontal"===i.mode||!i.collapse&&"vertical"===i.mode||(this.dispatch("ElSubmenu","mouse-leave-child"),clearTimeout(this.timeout),this.timeout=setTimeout((function(){!e.mouseInChild&&e.rootMenu.closeMenu(e.index)}),this.hideTimeout),this.appendToBody&&t&&"ElSubmenu"===this.$parent.$options.name&&this.$parent.handleMouseleave(!0))},handleTitleMouseenter:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.hoverBackground)}},handleTitleMouseleave:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.backgroundColor||"")}},updatePlacement:function(){this.currentPlacement="horizontal"===this.mode&&this.isFirstLevel?"bottom-start":"right-start"},initPopper:function(){this.referenceElm=this.$el,this.popperElm=this.$refs.menu,this.updatePlacement()}},created:function(){var e=this;this.$on("toggle-collapse",this.handleCollapseToggle),this.$on("mouse-enter-child",(function(){e.mouseInChild=!0,clearTimeout(e.timeout)})),this.$on("mouse-leave-child",(function(){e.mouseInChild=!1,clearTimeout(e.timeout)}))},mounted:function(){this.parentMenu.addSubmenu(this),this.rootMenu.addSubmenu(this),this.initPopper()},beforeDestroy:function(){this.parentMenu.removeSubmenu(this),this.rootMenu.removeSubmenu(this)},render:function(e){var t=this,i=this.active,n=this.opened,r=this.paddingStyle,s=this.titleStyle,a=this.backgroundColor,o=this.rootMenu,l=this.currentPlacement,u=this.menuTransitionName,c=this.mode,d=this.disabled,h=this.popperClass,p=this.$slots,f=this.isFirstLevel,m=e("transition",{attrs:{name:u}},[e("div",{ref:"menu",directives:[{name:"show",value:n}],class:["el-menu--"+c,h],on:{mouseenter:function(e){return t.handleMouseenter(e,100)},mouseleave:function(){return t.handleMouseleave(!0)},focus:function(e){return t.handleMouseenter(e,100)}}},[e("ul",{attrs:{role:"menu"},class:["el-menu el-menu--popup","el-menu--popup-"+l],style:{backgroundColor:o.backgroundColor||""}},[p.default])])]),v=e("el-collapse-transition",[e("ul",{attrs:{role:"menu"},class:"el-menu el-menu--inline",directives:[{name:"show",value:n}],style:{backgroundColor:o.backgroundColor||""}},[p.default])]),g="horizontal"===o.mode&&f||"vertical"===o.mode&&!o.collapse?"el-icon-arrow-down":"el-icon-arrow-right";return e("li",{class:{"el-submenu":!0,"is-active":i,"is-opened":n,"is-disabled":d},attrs:{role:"menuitem","aria-haspopup":"true","aria-expanded":n},on:{mouseenter:this.handleMouseenter,mouseleave:function(){return t.handleMouseleave(!1)},focus:this.handleMouseenter}},[e("div",{class:"el-submenu__title",ref:"submenu-title",on:{click:this.handleClick,mouseenter:this.handleTitleMouseenter,mouseleave:this.handleTitleMouseleave},style:[r,s,{backgroundColor:a}]},[p.title,e("i",{class:["el-submenu__icon-arrow",g]})]),this.isMenuPopup?m:v])}},void 0,void 0,!1,null,null,null);ke.options.__file="packages/menu/src/submenu.vue";var we=ke.exports;we.install=function(e){e.component(we.name,we)};var Ce=we,Se=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-menu-item",class:{"is-active":e.active,"is-disabled":e.disabled},style:[e.paddingStyle,e.itemStyle,{backgroundColor:e.backgroundColor}],attrs:{role:"menuitem",tabindex:"-1"},on:{click:e.handleClick,mouseenter:e.onMouseEnter,focus:e.onMouseEnter,blur:e.onMouseLeave,mouseleave:e.onMouseLeave}},["ElMenu"===e.parentMenu.$options.componentName&&e.rootMenu.collapse&&e.$slots.title?i("el-tooltip",{attrs:{effect:"dark",placement:"right"}},[i("div",{attrs:{slot:"content"},slot:"content"},[e._t("title")],2),i("div",{staticStyle:{position:"absolute",left:"0",top:"0",height:"100%",width:"100%",display:"inline-block","box-sizing":"border-box",padding:"0 20px"}},[e._t("default")],2)]):[e._t("default"),e._t("title")]],2)};Se._withStripped=!0;var Oe=i(26),De=i.n(Oe),Ee=r({name:"ElMenuItem",componentName:"ElMenuItem",mixins:[ye,C.a],components:{ElTooltip:De.a},props:{index:{default:null,validator:function(e){return"string"==typeof e||null===e}},route:[String,Object],disabled:Boolean},computed:{active:function(){return this.index===this.rootMenu.activeIndex},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},itemStyle:function(){var e={color:this.active?this.activeTextColor:this.textColor};return"horizontal"!==this.mode||this.isNested||(e.borderBottomColor=this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent"),e},isNested:function(){return this.parentMenu!==this.rootMenu}},methods:{onMouseEnter:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.hoverBackground)},onMouseLeave:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.backgroundColor)},handleClick:function(){this.disabled||(this.dispatch("ElMenu","item-click",this),this.$emit("click",this))}},mounted:function(){this.parentMenu.addItem(this),this.rootMenu.addItem(this)},beforeDestroy:function(){this.parentMenu.removeItem(this),this.rootMenu.removeItem(this)}},Se,[],!1,null,null,null);Ee.options.__file="packages/menu/src/menu-item.vue";var Te=Ee.exports;Te.install=function(e){e.component(Te.name,Te)};var $e=Te,Pe=function(){var e=this.$createElement,t=this._self._c||e;return t("li",{staticClass:"el-menu-item-group"},[t("div",{staticClass:"el-menu-item-group__title",style:{paddingLeft:this.levelPadding+"px"}},[this.$slots.title?this._t("title"):[this._v(this._s(this.title))]],2),t("ul",[this._t("default")],2)])};Pe._withStripped=!0;var je=r({name:"ElMenuItemGroup",componentName:"ElMenuItemGroup",inject:["rootMenu"],props:{title:{type:String}},data:function(){return{paddingLeft:20}},computed:{levelPadding:function(){var e=20,t=this.$parent;if(this.rootMenu.collapse)return 20;for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return e}}},Pe,[],!1,null,null,null);je.options.__file="packages/menu/src/menu-item-group.vue";var Me=je.exports;Me.install=function(e){e.component(Me.name,Me)};var Ie=Me,Ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{mousedown:function(e){e.preventDefault()},click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)};Ae._withStripped=!0;var Ne=void 0,Le="\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",Fe=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function Ve(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),r=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:Fe.map((function(e){return e+":"+t.getPropertyValue(e)})).join(";"),paddingSize:n,borderSize:r,boxSizing:i}}function ze(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;Ne||(Ne=document.createElement("textarea"),document.body.appendChild(Ne));var n=Ve(e),r=n.paddingSize,s=n.borderSize,a=n.boxSizing,o=n.contextStyle;Ne.setAttribute("style",o+";"+Le),Ne.value=e.value||e.placeholder||"";var l=Ne.scrollHeight,u={};"border-box"===a?l+=s:"content-box"===a&&(l-=r),Ne.value="";var c=Ne.scrollHeight-r;if(null!==t){var d=c*t;"border-box"===a&&(d=d+r+s),l=Math.max(d,l),u.minHeight=d+"px"}if(null!==i){var h=c*i;"border-box"===a&&(h=h+r+s),l=Math.min(h,l)}return u.height=l+"px",Ne.parentNode&&Ne.parentNode.removeChild(Ne),Ne=null,u}var Re=i(7),Be=i.n(Re),He=i(19),We=r({name:"ElInput",componentName:"ElInput",mixins:[C.a,k.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return Be()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick((function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()}))}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=ze(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:ze(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionUpdate:function(e){var t=e.target.value,i=t[t.length-1]||"";this.isComposing=!Object(He.isKorean)(i)},handleCompositionEnd:function(e){this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,r=i(t);return void 0!==n?(r>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),r)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||!!(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},Ge,[],!1,null,null,null);Ke.options.__file="packages/input-number/src/input-number.vue";var Xe=Ke.exports;Xe.install=function(e){e.component(Xe.name,Xe)};var Ze=Xe,Qe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[i("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[i("span",{staticClass:"el-radio__inner"}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1",autocomplete:"off"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),i("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};Qe._withStripped=!0;var Je=r({name:"ElRadio",mixins:[C.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick((function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)}))}}},Qe,[],!1,null,null,null);Je.options.__file="packages/radio/src/radio.vue";var et=Je.exports;et.install=function(e){e.component(et.name,et)};var tt=et,it=function(){var e=this.$createElement;return(this._self._c||e)(this._elTag,{tag:"component",staticClass:"el-radio-group",attrs:{role:"radiogroup"},on:{keydown:this.handleKeydown}},[this._t("default")],2)};it._withStripped=!0;var nt=Object.freeze({LEFT:37,UP:38,RIGHT:39,DOWN:40}),rt=r({name:"ElRadioGroup",componentName:"ElRadioGroup",inject:{elFormItem:{default:""}},mixins:[C.a],props:{value:{},size:String,fill:String,textColor:String,disabled:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},_elTag:function(){var e=(this.$vnode.data||{}).tag;return e&&"component"!==e||(e="div"),e},radioGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},created:function(){var e=this;this.$on("handleChange",(function(t){e.$emit("change",t)}))},mounted:function(){var e=this.$el.querySelectorAll("[type=radio]"),t=this.$el.querySelectorAll("[role=radio]")[0];![].some.call(e,(function(e){return e.checked}))&&t&&(t.tabIndex=0)},methods:{handleKeydown:function(e){var t=e.target,i="INPUT"===t.nodeName?"[type=radio]":"[role=radio]",n=this.$el.querySelectorAll(i),r=n.length,s=[].indexOf.call(n,t),a=this.$el.querySelectorAll("[role=radio]");switch(e.keyCode){case nt.LEFT:case nt.UP:e.stopPropagation(),e.preventDefault(),0===s?(a[r-1].click(),a[r-1].focus()):(a[s-1].click(),a[s-1].focus());break;case nt.RIGHT:case nt.DOWN:s===r-1?(e.stopPropagation(),e.preventDefault(),a[0].click(),a[0].focus()):(a[s+1].click(),a[s+1].focus())}}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[this.value])}}},it,[],!1,null,null,null);rt.options.__file="packages/radio/src/radio-group.vue";var st=rt.exports;st.install=function(e){e.component(st.name,st)};var at=st,ot=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio-button",class:[e.size?"el-radio-button--"+e.size:"",{"is-active":e.value===e.label},{"is-disabled":e.isDisabled},{"is-focus":e.focus}],attrs:{role:"radio","aria-checked":e.value===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.value=e.isDisabled?e.value:e.label}}},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.value,expression:"value"}],staticClass:"el-radio-button__orig-radio",attrs:{type:"radio",name:e.name,disabled:e.isDisabled,tabindex:"-1",autocomplete:"off"},domProps:{value:e.label,checked:e._q(e.value,e.label)},on:{change:[function(t){e.value=e.label},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),i("span",{staticClass:"el-radio-button__inner",style:e.value===e.label?e.activeStyle:null,on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};ot._withStripped=!0;var lt=r({name:"ElRadioButton",mixins:[C.a],inject:{elForm:{default:""},elFormItem:{default:""}},props:{label:{},disabled:Boolean,name:String},data:function(){return{focus:!1}},computed:{value:{get:function(){return this._radioGroup.value},set:function(e){this._radioGroup.$emit("input",e)}},_radioGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return e;e=e.$parent}return!1},activeStyle:function(){return{backgroundColor:this._radioGroup.fill||"",borderColor:this._radioGroup.fill||"",boxShadow:this._radioGroup.fill?"-1px 0 0 0 "+this._radioGroup.fill:"",color:this._radioGroup.textColor||""}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._radioGroup.radioGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isDisabled:function(){return this.disabled||this._radioGroup.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this._radioGroup&&this.value!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick((function(){e.dispatch("ElRadioGroup","handleChange",e.value)}))}}},ot,[],!1,null,null,null);lt.options.__file="packages/radio/src/radio-button.vue";var ut=lt.exports;ut.install=function(e){e.component(ut.name,ut)};var ct=ut,dt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{id:e.id}},[i("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{tabindex:!!e.indeterminate&&0,role:!!e.indeterminate&&"checkbox","aria-checked":!!e.indeterminate&&"mixed"}},[i("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,r=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var s=e._i(i,null);n.checked?s<0&&(e.model=i.concat([null])):s>-1&&(e.model=i.slice(0,s).concat(i.slice(s+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=e.label,a=e._i(i,s);n.checked?a<0&&(e.model=i.concat([s])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};dt._withStripped=!0;var ht=r({name:"ElCheckbox",mixins:[C.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick((function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])}))}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},dt,[],!1,null,null,null);ht.options.__file="packages/checkbox/src/checkbox.vue";var pt=ht.exports;pt.install=function(e){e.component(pt.name,pt)};var ft=pt,mt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox-button",class:[e.size?"el-checkbox-button--"+e.size:"",{"is-disabled":e.isDisabled},{"is-checked":e.isChecked},{"is-focus":e.focus}],attrs:{role:"checkbox","aria-checked":e.isChecked,"aria-disabled":e.isDisabled}},[e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,r=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var s=e._i(i,null);n.checked?s<0&&(e.model=i.concat([null])):s>-1&&(e.model=i.slice(0,s).concat(i.slice(s+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=e.label,a=e._i(i,s);n.checked?a<0&&(e.model=i.concat([s])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox-button__inner",style:e.isChecked?e.activeStyle:null},[e._t("default",[e._v(e._s(e.label))])],2):e._e()])};mt._withStripped=!0;var vt=r({name:"ElCheckboxButton",mixins:[C.a],inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},props:{value:{},label:{},disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number]},computed:{model:{get:function(){return this._checkboxGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this._checkboxGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):void 0!==this.value?this.$emit("input",e):this.selfModel=e}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},_checkboxGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return e;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},activeStyle:function(){return{backgroundColor:this._checkboxGroup.fill||"",borderColor:this._checkboxGroup.fill||"",color:this._checkboxGroup.textColor||"","box-shadow":"-1px 0 0 0 "+this._checkboxGroup.fill}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._checkboxGroup.checkboxGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this._checkboxGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled}},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick((function(){t._checkboxGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])}))}}},created:function(){this.checked&&this.addToStore()}},mt,[],!1,null,null,null);vt.options.__file="packages/checkbox/src/checkbox-button.vue";var gt=vt.exports;gt.install=function(e){e.component(gt.name,gt)};var _t=gt,bt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-checkbox-group",attrs:{role:"group","aria-label":"checkbox-group"}},[this._t("default")],2)};bt._withStripped=!0;var yt=r({name:"ElCheckboxGroup",componentName:"ElCheckboxGroup",mixins:[C.a],inject:{elFormItem:{default:""}},props:{value:{},disabled:Boolean,min:Number,max:Number,size:String,fill:String,textColor:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[e])}}},bt,[],!1,null,null,null);yt.options.__file="packages/checkbox/src/checkbox-group.vue";var xt=yt.exports;xt.install=function(e){e.component(xt.name,xt)};var kt=xt,wt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-switch",class:{"is-disabled":e.switchDisabled,"is-checked":e.checked},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.switchDisabled},on:{click:function(t){return t.preventDefault(),e.switchValue(t)}}},[i("input",{ref:"input",staticClass:"el-switch__input",attrs:{type:"checkbox",id:e.id,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:e.switchDisabled},on:{change:e.handleChange,keydown:function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.switchValue(t)}}}),e.inactiveIconClass||e.inactiveText?i("span",{class:["el-switch__label","el-switch__label--left",e.checked?"":"is-active"]},[e.inactiveIconClass?i("i",{class:[e.inactiveIconClass]}):e._e(),!e.inactiveIconClass&&e.inactiveText?i("span",{attrs:{"aria-hidden":e.checked}},[e._v(e._s(e.inactiveText))]):e._e()]):e._e(),i("span",{ref:"core",staticClass:"el-switch__core",style:{width:e.coreWidth+"px"}}),e.activeIconClass||e.activeText?i("span",{class:["el-switch__label","el-switch__label--right",e.checked?"is-active":""]},[e.activeIconClass?i("i",{class:[e.activeIconClass]}):e._e(),!e.activeIconClass&&e.activeText?i("span",{attrs:{"aria-hidden":!e.checked}},[e._v(e._s(e.activeText))]):e._e()]):e._e()])};wt._withStripped=!0;var Ct=r({name:"ElSwitch",mixins:[R()("input"),k.a,C.a],inject:{elForm:{default:""}},props:{value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},activeIconClass:{type:String,default:""},inactiveIconClass:{type:String,default:""},activeText:String,inactiveText:String,activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String},data:function(){return{coreWidth:this.width}},created:function(){~[this.activeValue,this.inactiveValue].indexOf(this.value)||this.$emit("input",this.inactiveValue)},computed:{checked:function(){return this.value===this.activeValue},switchDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{checked:function(){this.$refs.input.checked=this.checked,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[this.value])}},methods:{handleChange:function(e){var t=this,i=this.checked?this.inactiveValue:this.activeValue;this.$emit("input",i),this.$emit("change",i),this.$nextTick((function(){t.$refs.input.checked=t.checked}))},setBackgroundColor:function(){var e=this.checked?this.activeColor:this.inactiveColor;this.$refs.core.style.borderColor=e,this.$refs.core.style.backgroundColor=e},switchValue:function(){!this.switchDisabled&&this.handleChange()},getMigratingConfig:function(){return{props:{"on-color":"on-color is renamed to active-color.","off-color":"off-color is renamed to inactive-color.","on-text":"on-text is renamed to active-text.","off-text":"off-text is renamed to inactive-text.","on-value":"on-value is renamed to active-value.","off-value":"off-value is renamed to inactive-value.","on-icon-class":"on-icon-class is renamed to active-icon-class.","off-icon-class":"off-icon-class is renamed to inactive-icon-class."}}}},mounted:function(){this.coreWidth=this.width||40,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.$refs.input.checked=this.checked}},wt,[],!1,null,null,null);Ct.options.__file="packages/switch/src/component.vue";var St=Ct.exports;St.install=function(e){e.component(St.name,St)};var Ot=St,Dt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,(function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])})),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.selectOption(t))},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return!("button"in t)&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:e.deletePrevTag(t)},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,tabindex:e.multiple&&e.filterable?"-1":null},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.debouncedOnInputChange},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.selectOption(t))},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)};Dt._withStripped=!0;var Et=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};Et._withStripped=!0;var Tt=r({name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[A.a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",(function(){e.$parent.visible&&e.updatePopper()})),this.$on("destroyPopper",this.destroyPopper)}},Et,[],!1,null,null,null);Tt.options.__file="packages/select/src/select-dropdown.vue";var $t=Tt.exports,Pt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};Pt._withStripped=!0;var jt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Mt=r({mixins:[C.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,r=i.valueKey;if(!this.created&&!n){if(r&&"object"===(void 0===e?"undefined":jt(e))&&"object"===(void 0===t?"undefined":jt(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some((function(e){return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)}))}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(m.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),r=i.indexOf(this);n>-1&&r<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},Pt,[],!1,null,null,null);Mt.options.__file="packages/select/src/option.vue";var It=Mt.exports,At=i(29),Nt=i.n(At),Lt=i(14),Ft=i(27),Vt=i.n(Ft),zt=r({mixins:[C.a,f.a,R()("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter((function(e){return e.visible})).every((function(e){return e.disabled}))}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach((function(e){e.hover=t.hoverOption===e}))}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick((function(){return t.scrollToOption(t.hoverOption)}))}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(m.isIE)()&&!Object(m.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter((function(e){return!e.created})).some((function(t){return t.currentLabel===e.query}));return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"},propPlaceholder:function(){return void 0!==this.placeholder?this.placeholder:this.t("el.select.placeholder")}},components:{ElInput:h.a,ElSelectMenu:$t,ElOption:It,ElTag:Nt.a,ElScrollbar:L.a},directives:{Clickoutside:j.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,required:!1},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick((function(){e.resetInputHeight()}))},propPlaceholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(m.valueEquals)(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick((function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)})),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick((function(){e.broadcast("ElSelectDropdown","updatePopper")})),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick((function(e){return t.handleQueryChange(i)}));else{var n=i[i.length-1]||"";this.isOnComposition=!Object(He.isKorean)(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick((function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")})),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick((function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()})),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var i=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");Vt()(i,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick((function(){return e.scrollToOption(e.selected)}))},emitChange:function(e){Object(m.valueEquals)(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),r="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),s=this.cachedOptions.length-1;s>=0;s--){var a=this.cachedOptions[s];if(i?Object(m.getValueByPath)(a.value,this.valueKey)===Object(m.getValueByPath)(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var o={value:e,currentLabel:i||n||r?"":String(e)};return this.multiple&&(o.hitState=!1),o},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach((function(t){i.push(e.getOption(t))})),this.selected=i,this.$nextTick((function(){e.resetInputHeight()}))},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.filterable&&(this.menuVisibleOnFocus=!0)),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout((function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)}),50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick((function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,(function(e){return"INPUT"===e.tagName}))[0],n=e.$refs.tags,r=n?Math.round(n.getBoundingClientRect().height):0,s=e.initialInputHeight||40;i.style.height=0===e.selected.length?s+"px":Math.max(n?r+(r>s?6:0):0,s)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}}))},resetHoverIndex:function(){var e=this;setTimeout((function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map((function(t){return e.options.indexOf(t)}))):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)}),300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),r=this.getValueIndex(n,e.value);r>-1?n.splice(r,1):(this.multipleLimit<=0||n.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],i="[object object]"===Object.prototype.toString.call(t).toLowerCase();if(i){var n=this.valueKey,r=-1;return e.some((function(e,i){return Object(m.getValueByPath)(e,n)===Object(m.getValueByPath)(t,n)&&(r=i,!0)})),r}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(m.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.propPlaceholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=$()(this.debounce,(function(){e.onInputChange()})),this.debouncedQueryChange=$()(this.debounce,(function(t){e.handleQueryChange(t.target.value)})),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object(Lt.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick((function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)})),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(Lt.removeResizeListener)(this.$el,this.handleResize)}},Dt,[],!1,null,null,null);zt.options.__file="packages/select/src/select.vue";var Rt=zt.exports;Rt.install=function(e){e.component(Rt.name,Rt)};var Bt=Rt;It.install=function(e){e.component(It.name,It)};var Ht=It,Wt=function(){var e=this.$createElement,t=this._self._c||e;return t("ul",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"el-select-group__wrap"},[t("li",{staticClass:"el-select-group__title"},[this._v(this._s(this.label))]),t("li",[t("ul",{staticClass:"el-select-group"},[this._t("default")],2)])])};Wt._withStripped=!0;var qt=r({mixins:[C.a],name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast("ElOption","handleGroupDisabled",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some((function(e){return!0===e.visible}))}},created:function(){this.$on("queryChange",this.queryChange)},mounted:function(){this.disabled&&this.broadcast("ElOption","handleGroupDisabled",this.disabled)}},Wt,[],!1,null,null,null);qt.options.__file="packages/select/src/option-group.vue";var Ut=qt.exports;Ut.install=function(e){e.component(Ut.name,Ut)};var Gt=Ut,Yt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])};Yt._withStripped=!0;var Kt=r({name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},Yt,[],!1,null,null,null);Kt.options.__file="packages/button/src/button.vue";var Xt=Kt.exports;Xt.install=function(e){e.component(Xt.name,Xt)};var Zt=Xt,Qt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-button-group"},[this._t("default")],2)};Qt._withStripped=!0;var Jt=r({name:"ElButtonGroup"},Qt,[],!1,null,null,null);Jt.options.__file="packages/button/src/button-group.vue";var ei=Jt.exports;ei.install=function(e){e.component(ei.name,ei)};var ti=ei,ii=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-table",class:[{"el-table--fit":e.fit,"el-table--striped":e.stripe,"el-table--border":e.border||e.isGroup,"el-table--hidden":e.isHidden,"el-table--group":e.isGroup,"el-table--fluid-height":e.maxHeight,"el-table--scrollable-x":e.layout.scrollX,"el-table--scrollable-y":e.layout.scrollY,"el-table--enable-row-hover":!e.store.states.isComplex,"el-table--enable-row-transition":0!==(e.store.states.data||[]).length&&(e.store.states.data||[]).length<100},e.tableSize?"el-table--"+e.tableSize:""],on:{mouseleave:function(t){e.handleMouseLeave(t)}}},[i("div",{ref:"hiddenColumns",staticClass:"hidden-columns"},[e._t("default")],2),e.showHeader?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"headerWrapper",staticClass:"el-table__header-wrapper"},[i("table-header",{ref:"tableHeader",style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"default-sort":e.defaultSort}})],1):e._e(),i("div",{ref:"bodyWrapper",staticClass:"el-table__body-wrapper",class:[e.layout.scrollX?"is-scrolling-"+e.scrollPosition:"is-scrolling-none"],style:[e.bodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{context:e.context,store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.data&&0!==e.data.length?e._e():i("div",{ref:"emptyBlock",staticClass:"el-table__empty-block",style:e.emptyBlockStyle},[i("span",{staticClass:"el-table__empty-text"},[e._t("empty",[e._v(e._s(e.emptyText||e.t("el.table.emptyText")))])],2)]),e.$slots.append?i("div",{ref:"appendWrapper",staticClass:"el-table__append-wrapper"},[e._t("append")],2):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"},{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"footerWrapper",staticClass:"el-table__footer-wrapper"},[i("table-footer",{style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,"default-sort":e.defaultSort}})],1):e._e(),e.fixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"fixedWrapper",staticClass:"el-table__fixed",style:[{width:e.layout.fixedWidth?e.layout.fixedWidth+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"fixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"fixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"fixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"left",store:e.store,stripe:e.stripe,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"row-style":e.rowStyle}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"fixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"rightFixedWrapper",staticClass:"el-table__fixed-right",style:[{width:e.layout.rightFixedWidth?e.layout.rightFixedWidth+"px":"",right:e.layout.scrollY?(e.border?e.layout.gutterWidth:e.layout.gutterWidth||0)+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"rightFixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"rightFixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"rightFixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"right",store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"rightFixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{ref:"rightFixedPatch",staticClass:"el-table__fixed-right-patch",style:{width:e.layout.scrollY?e.layout.gutterWidth+"px":"0",height:e.layout.headerHeight+"px"}}):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.resizeProxyVisible,expression:"resizeProxyVisible"}],ref:"resizeProxy",staticClass:"el-table__column-resize-proxy"})])};ii._withStripped=!0;var ni=i(17),ri=i.n(ni),si=i(35),ai=i(38),oi=i.n(ai),li="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>-1,ui={bind:function(e,t){var i,n;i=e,n=t.value,i&&i.addEventListener&&i.addEventListener(li?"DOMMouseScroll":"mousewheel",(function(e){var t=oi()(e);n&&n.apply(this,[e,t])}))}},ci=i(6),di=i.n(ci),hi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pi=function(e){for(var t=e.target;t&&"HTML"!==t.tagName.toUpperCase();){if("TD"===t.tagName.toUpperCase())return t;t=t.parentNode}return null},fi=function(e){return null!==e&&"object"===(void 0===e?"undefined":hi(e))},mi=function(e,t,i,n,r){if(!t&&!n&&(!r||Array.isArray(r)&&!r.length))return e;i="string"==typeof i?"descending"===i?-1:1:i&&i<0?-1:1;var s=n?null:function(i,n){return r?(Array.isArray(r)||(r=[r]),r.map((function(t){return"string"==typeof t?Object(m.getValueByPath)(i,t):t(i,n,e)}))):("$key"!==t&&fi(i)&&"$value"in i&&(i=i.$value),[fi(i)?Object(m.getValueByPath)(i,t):i])};return e.map((function(e,t){return{value:e,index:t,key:s?s(e,t):null}})).sort((function(e,t){var r=function(e,t){if(n)return n(e.value,t.value);for(var i=0,r=e.key.length;it.key[i])return 1}return 0}(e,t);return r||(r=e.index-t.index),r*i})).map((function(e){return e.value}))},vi=function(e,t){var i=null;return e.columns.forEach((function(e){e.id===t&&(i=e)})),i},gi=function(e,t){var i=(t.className||"").match(/el-table_[^\s]+/gm);return i?vi(e,i[0]):null},_i=function(e,t){if(!e)throw new Error("row is required when get row identity");if("string"==typeof t){if(t.indexOf(".")<0)return e[t];for(var i=t.split("."),n=e,r=0;r2&&void 0!==arguments[2]?arguments[2]:"children",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"hasChildren",r=function(e){return!(Array.isArray(e)&&e.length)};function s(e,a,o){t(e,a,o),a.forEach((function(e){if(e[n])t(e,null,o+1);else{var a=e[i];r(a)||s(e,a,o+1)}}))}e.forEach((function(e){if(e[n])t(e,null,0);else{var a=e[i];r(a)||s(e,a,0)}}))}(e,(function(e,t,i){var n=_i(e,r);Array.isArray(t)?a[n]={children:t.map((function(e){return _i(e,r)})),level:i}:s&&(a[n]={children:[],lazy:!0,level:i})}),i,n),a},updateTreeData:function(){var e=this.normalizedData,t=this.normalizedLazyNode,i=Object.keys(e),n={};if(i.length){var r=this.states,s=r.treeData,a=r.defaultExpandAll,o=r.expandRowKeys,l=r.lazy,u=[],c=function(e,t){var i=a||o&&-1!==o.indexOf(t);return!!(e&&e.expanded||i)};i.forEach((function(t){var i=s[t],r=Oi({},e[t]);if(r.expanded=c(i,t),r.lazy){var a=i||{},o=a.loaded,l=void 0!==o&&o,d=a.loading,h=void 0!==d&&d;r.loaded=!!l,r.loading=!!h,u.push(t)}n[t]=r}));var d=Object.keys(t);l&&d.length&&u.length&&d.forEach((function(e){var i=s[e],r=t[e].children;if(-1!==u.indexOf(e)){if(0!==n[e].children.length)throw new Error("[ElTable]children must be an empty array.");n[e].children=r}else{var a=i||{},o=a.loaded,l=void 0!==o&&o,d=a.loading,h=void 0!==d&&d;n[e]={lazy:!0,loaded:!!l,loading:!!h,expanded:c(i,e),children:r,level:""}}}))}this.states.treeData=n,this.updateTableScrollY()},updateTreeExpandKeys:function(e){this.states.expandRowKeys=e,this.updateTreeData()},toggleTreeExpansion:function(e,t){this.assertRowKey();var i=this.states,n=i.rowKey,r=i.treeData,s=_i(e,n),a=s&&r[s];if(s&&a&&"expanded"in a){var o=a.expanded;t=void 0===t?!a.expanded:t,r[s].expanded=t,o!==t&&this.table.$emit("expand-change",e,t),this.updateTableScrollY()}},loadOrToggle:function(e){this.assertRowKey();var t=this.states,i=t.lazy,n=t.treeData,r=t.rowKey,s=_i(e,r),a=n[s];i&&a&&"loaded"in a&&!a.loaded?this.loadData(e,s,a):this.toggleTreeExpansion(e)},loadData:function(e,t,i){var n=this,r=this.table.load,s=this.states.treeData;r&&!s[t].loaded&&(s[t].loading=!0,r(e,i,(function(i){if(!Array.isArray(i))throw new Error("[ElTable] data must be an array");var r=n.states,s=r.lazyTreeNodeMap,a=r.treeData;a[t].loading=!1,a[t].loaded=!0,a[t].expanded=!0,i.length&&n.$set(s,t,i),n.table.$emit("expand-change",e,!0)})))}}},Ei=function e(t){var i=[];return t.forEach((function(t){t.children?i.push.apply(i,e(t.children)):i.push(t)})),i},Ti=di.a.extend({data:function(){return{states:{rowKey:null,data:[],isComplex:!1,_columns:[],originColumns:[],columns:[],fixedColumns:[],rightFixedColumns:[],leafColumns:[],fixedLeafColumns:[],rightFixedLeafColumns:[],leafColumnsLength:0,fixedLeafColumnsLength:0,rightFixedLeafColumnsLength:0,isAllSelected:!1,selection:[],reserveSelection:!1,selectOnIndeterminate:!1,selectable:null,filters:{},filteredData:null,sortingColumn:null,sortProp:null,sortOrder:null,hoverRow:null}}},mixins:[Ci,Si,Di],methods:{assertRowKey:function(){if(!this.states.rowKey)throw new Error("[ElTable] prop row-key is required")},updateColumns:function(){var e=this.states,t=e._columns||[];e.fixedColumns=t.filter((function(e){return!0===e.fixed||"left"===e.fixed})),e.rightFixedColumns=t.filter((function(e){return"right"===e.fixed})),e.fixedColumns.length>0&&t[0]&&"selection"===t[0].type&&!t[0].fixed&&(t[0].fixed=!0,e.fixedColumns.unshift(t[0]));var i=t.filter((function(e){return!e.fixed}));e.originColumns=[].concat(e.fixedColumns).concat(i).concat(e.rightFixedColumns);var n=Ei(i),r=Ei(e.fixedColumns),s=Ei(e.rightFixedColumns);e.leafColumnsLength=n.length,e.fixedLeafColumnsLength=r.length,e.rightFixedLeafColumnsLength=s.length,e.columns=[].concat(r).concat(n).concat(s),e.isComplex=e.fixedColumns.length>0||e.rightFixedColumns.length>0},scheduleLayout:function(e){e&&this.updateColumns(),this.table.debouncedUpdateLayout()},isSelected:function(e){var t=this.states.selection;return(void 0===t?[]:t).indexOf(e)>-1},clearSelection:function(){var e=this.states;e.isAllSelected=!1,e.selection.length&&(e.selection=[],this.table.$emit("selection-change",[]))},cleanSelection:function(){var e=this.states,t=e.data,i=e.rowKey,n=e.selection,r=void 0;if(i){r=[];var s=bi(n,i),a=bi(t,i);for(var o in s)s.hasOwnProperty(o)&&!a[o]&&r.push(s[o].row)}else r=n.filter((function(e){return-1===t.indexOf(e)}));if(r.length){var l=n.filter((function(e){return-1===r.indexOf(e)}));e.selection=l,this.table.$emit("selection-change",l.slice())}},toggleRowSelection:function(e,t){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=wi(this.states.selection,e,t);if(n){var r=(this.states.selection||[]).slice();i&&this.table.$emit("select",r,e),this.table.$emit("selection-change",r)}},_toggleAllSelection:function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.selection,r=e.selectOnIndeterminate?!e.isAllSelected:!(e.isAllSelected||n.length);e.isAllSelected=r;var s=!1;i.forEach((function(t,i){e.selectable?e.selectable.call(null,t,i)&&wi(n,t,r)&&(s=!0):wi(n,t,r)&&(s=!0)})),s&&this.table.$emit("selection-change",n?n.slice():[]),this.table.$emit("select-all",n)},updateSelectionByRowKey:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.data,r=bi(t,i);n.forEach((function(e){var n=_i(e,i),s=r[n];s&&(t[s.index]=e)}))},updateAllSelected:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.selectable,r=e.data||[];if(0!==r.length){var s=void 0;i&&(s=bi(t,i));for(var a,o=!0,l=0,u=0,c=r.length;u1?i-1:0),r=1;rthis.bodyHeight;return this.scrollY=n,i!==n}return!1},e.prototype.setHeight=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"height";if(!di.a.prototype.$isServer){var n=this.table.$el;if(e=ki(e),this.height=e,!n&&(e||0===e))return di.a.nextTick((function(){return t.setHeight(e,i)}));"number"==typeof e?(n.style[i]=e+"px",this.updateElsHeight()):"string"==typeof e&&(n.style[i]=e,this.updateElsHeight())}},e.prototype.setMaxHeight=function(e){this.setHeight(e,"max-height")},e.prototype.getFlattenColumns=function(){var e=[];return this.table.columns.forEach((function(t){t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)})),e},e.prototype.updateElsHeight=function(){var e=this;if(!this.table.$ready)return di.a.nextTick((function(){return e.updateElsHeight()}));var t=this.table.$refs,i=t.headerWrapper,n=t.appendWrapper,r=t.footerWrapper;if(this.appendHeight=n?n.offsetHeight:0,!this.showHeader||i){var s=i?i.querySelector(".el-table__header tr"):null,a=this.headerDisplayNone(s),o=this.headerHeight=this.showHeader?i.offsetHeight:0;if(this.showHeader&&!a&&i.offsetWidth>0&&(this.table.columns||[]).length>0&&o<2)return di.a.nextTick((function(){return e.updateElsHeight()}));var l=this.tableHeight=this.table.$el.clientHeight,u=this.footerHeight=r?r.offsetHeight:0;null!==this.height&&(this.bodyHeight=l-o-u+(r?1:0)),this.fixedBodyHeight=this.scrollX?this.bodyHeight-this.gutterWidth:this.bodyHeight;var c=!(this.store.states.data&&this.store.states.data.length);this.viewportHeight=this.scrollX?l-(c?0:this.gutterWidth):l,this.updateScrollY(),this.notifyObservers("scrollable")}},e.prototype.headerDisplayNone=function(e){if(!e)return!0;for(var t=e;"DIV"!==t.tagName;){if("none"===getComputedStyle(t).display)return!0;t=t.parentElement}return!1},e.prototype.updateColumnsWidth=function(){if(!di.a.prototype.$isServer){var e=this.fit,t=this.table.$el.clientWidth,i=0,n=this.getFlattenColumns(),r=n.filter((function(e){return"number"!=typeof e.width}));if(n.forEach((function(e){"number"==typeof e.width&&e.realWidth&&(e.realWidth=null)})),r.length>0&&e){n.forEach((function(e){i+=e.width||e.minWidth||80}));var s=this.scrollY?this.gutterWidth:0;if(i<=t-s){this.scrollX=!1;var a=t-s-i;if(1===r.length)r[0].realWidth=(r[0].minWidth||80)+a;else{var o=a/r.reduce((function(e,t){return e+(t.minWidth||80)}),0),l=0;r.forEach((function(e,t){if(0!==t){var i=Math.floor((e.minWidth||80)*o);l+=i,e.realWidth=(e.minWidth||80)+i}})),r[0].realWidth=(r[0].minWidth||80)+a-l}}else this.scrollX=!0,r.forEach((function(e){e.realWidth=e.minWidth}));this.bodyWidth=Math.max(i,t),this.table.resizeState.width=this.bodyWidth}else n.forEach((function(e){e.width||e.minWidth?e.realWidth=e.width||e.minWidth:e.realWidth=80,i+=e.realWidth})),this.scrollX=i>t,this.bodyWidth=i;var u=this.store.states.fixedColumns;if(u.length>0){var c=0;u.forEach((function(e){c+=e.realWidth||e.width})),this.fixedWidth=c}var d=this.store.states.rightFixedColumns;if(d.length>0){var h=0;d.forEach((function(e){h+=e.realWidth||e.width})),this.rightFixedWidth=h}this.notifyObservers("columns")}},e.prototype.addObserver=function(e){this.observers.push(e)},e.prototype.removeObserver=function(e){var t=this.observers.indexOf(e);-1!==t&&this.observers.splice(t,1)},e.prototype.notifyObservers=function(e){var t=this;this.observers.forEach((function(i){switch(e){case"columns":i.onColumnsChange(t);break;case"scrollable":i.onScrollableChange(t);break;default:throw new Error("Table Layout don't have event "+e+".")}}))},e}(),Ai={created:function(){this.tableLayout.addObserver(this)},destroyed:function(){this.tableLayout.removeObserver(this)},computed:{tableLayout:function(){var e=this.layout;if(!e&&this.table&&(e=this.table.layout),!e)throw new Error("Can not find table layout.");return e}},mounted:function(){this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout)},updated:function(){this.__updated__||(this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout),this.__updated__=!0)},methods:{onColumnsChange:function(e){var t=this.$el.querySelectorAll("colgroup > col");if(t.length){var i=e.getFlattenColumns(),n={};i.forEach((function(e){n[e.id]=e}));for(var r=0,s=t.length;r col[name=gutter]"),i=0,n=t.length;i=this.leftFixedLeafCount:"right"===this.fixed?e=this.columnsCount-this.rightFixedLeafCount},getSpan:function(e,t,i,n){var r=1,s=1,a=this.table.spanMethod;if("function"==typeof a){var o=a({row:e,column:t,rowIndex:i,columnIndex:n});Array.isArray(o)?(r=o[0],s=o[1]):"object"===(void 0===o?"undefined":Ni(o))&&(r=o.rowspan,s=o.colspan)}return{rowspan:r,colspan:s}},getRowStyle:function(e,t){var i=this.table.rowStyle;return"function"==typeof i?i.call(null,{row:e,rowIndex:t}):i||null},getRowClass:function(e,t){var i=["el-table__row"];this.table.highlightCurrentRow&&e===this.store.states.currentRow&&i.push("current-row"),this.stripe&&t%2==1&&i.push("el-table__row--striped");var n=this.table.rowClassName;return"string"==typeof n?i.push(n):"function"==typeof n&&i.push(n.call(null,{row:e,rowIndex:t})),this.store.states.expandRows.indexOf(e)>-1&&i.push("expanded"),i},getCellStyle:function(e,t,i,n){var r=this.table.cellStyle;return"function"==typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):r},getCellClass:function(e,t,i,n){var r=[n.id,n.align,n.className];this.isColumnHidden(t)&&r.push("is-hidden");var s=this.table.cellClassName;return"string"==typeof s?r.push(s):"function"==typeof s&&r.push(s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),r.push("el-table__cell"),r.join(" ")},getColspanRealWidth:function(e,t,i){return t<1?e[i].realWidth:e.map((function(e){return e.realWidth})).slice(i,i+t).reduce((function(e,t){return e+t}),-1)},handleCellMouseEnter:function(e,t){var i=this.table,n=pi(e);if(n){var r=gi(i,n),s=i.hoverState={cell:n,column:r,row:t};i.$emit("cell-mouse-enter",s.row,s.column,s.cell,e)}var a=e.target.querySelector(".cell");if(Object(fe.hasClass)(a,"el-tooltip")&&a.childNodes.length){var o=document.createRange();if(o.setStart(a,0),o.setEnd(a,a.childNodes.length),(o.getBoundingClientRect().width+((parseInt(Object(fe.getStyle)(a,"paddingLeft"),10)||0)+(parseInt(Object(fe.getStyle)(a,"paddingRight"),10)||0))>a.offsetWidth||a.scrollWidth>a.offsetWidth)&&this.$refs.tooltip){var l=this.$refs.tooltip;this.tooltipContent=n.innerText||n.textContent,l.referenceElm=n,l.$refs.popper&&(l.$refs.popper.style.display="none"),l.doDestroy(),l.setExpectedState(!0),this.activateTooltip(l)}}},handleCellMouseLeave:function(e){var t=this.$refs.tooltip;if(t&&(t.setExpectedState(!1),t.handleClosePopper()),pi(e)){var i=this.table.hoverState||{};this.table.$emit("cell-mouse-leave",i.row,i.column,i.cell,e)}},handleMouseEnter:$()(30,(function(e){this.store.commit("setHoverRow",e)})),handleMouseLeave:$()(30,(function(){this.store.commit("setHoverRow",null)})),handleContextMenu:function(e,t){this.handleEvent(e,t,"contextmenu")},handleDoubleClick:function(e,t){this.handleEvent(e,t,"dblclick")},handleClick:function(e,t){this.store.commit("setCurrentRow",t),this.handleEvent(e,t,"click")},handleEvent:function(e,t,i){var n=this.table,r=pi(e),s=void 0;r&&(s=gi(n,r))&&n.$emit("cell-"+i,t,s,r,e),n.$emit("row-"+i,t,s,e)},rowRender:function(e,t,i){var n=this,r=this.$createElement,s=this.treeIndent,a=this.columns,o=this.firstDefaultColumnIndex,l=a.map((function(e,t){return n.isColumnHidden(t)})),u=this.getRowClass(e,t),c=!0;return i&&(u.push("el-table__row--level-"+i.level),c=i.display),r("tr",{style:[c?null:{display:"none"},this.getRowStyle(e,t)],class:u,key:this.getKeyOfRow(e,t),on:{dblclick:function(t){return n.handleDoubleClick(t,e)},click:function(t){return n.handleClick(t,e)},contextmenu:function(t){return n.handleContextMenu(t,e)},mouseenter:function(e){return n.handleMouseEnter(t)},mouseleave:this.handleMouseLeave}},[a.map((function(u,c){var d=n.getSpan(e,u,t,c),h=d.rowspan,p=d.colspan;if(!h||!p)return null;var f=Li({},u);f.realWidth=n.getColspanRealWidth(a,p,c);var m={store:n.store,_self:n.context||n.table.$vnode.context,column:f,row:e,$index:t};return c===o&&i&&(m.treeNode={indent:i.level*s,level:i.level},"boolean"==typeof i.expanded&&(m.treeNode.expanded=i.expanded,"loading"in i&&(m.treeNode.loading=i.loading),"noLazyChildren"in i&&(m.treeNode.noLazyChildren=i.noLazyChildren))),r("td",{style:n.getCellStyle(t,c,e,u),class:n.getCellClass(t,c,e,u),attrs:{rowspan:h,colspan:p},on:{mouseenter:function(t){return n.handleCellMouseEnter(t,e)},mouseleave:n.handleCellMouseLeave}},[u.renderCell.call(n._renderProxy,n.$createElement,m,l[c])])}))])},wrappedRowRender:function(e,t){var i=this,n=this.$createElement,r=this.store,s=r.isRowExpanded,a=r.assertRowKey,o=r.states,l=o.treeData,u=o.lazyTreeNodeMap,c=o.childrenColumnName,d=o.rowKey;if(this.hasExpandColumn&&s(e)){var h=this.table.renderExpanded,p=this.rowRender(e,t);return h?[[p,n("tr",{key:"expanded-row__"+p.key},[n("td",{attrs:{colspan:this.columnsCount},class:"el-table__cell el-table__expanded-cell"},[h(this.$createElement,{row:e,$index:t,store:this.store})])])]]:(console.error("[Element Error]renderExpanded is required."),p)}if(Object.keys(l).length){a();var f=_i(e,d),m=l[f],v=null;m&&(v={expanded:m.expanded,level:m.level,display:!0},"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(v.noLazyChildren=!(m.children&&m.children.length)),v.loading=m.loading));var g=[this.rowRender(e,t,v)];if(m){var _=0;m.display=!0,function e(n,r){n&&n.length&&r&&n.forEach((function(n){var s={display:r.display&&r.expanded,level:r.level+1},a=_i(n,d);if(null==a)throw new Error("for nested data item, row-key is required.");if((m=Li({},l[a]))&&(s.expanded=m.expanded,m.level=m.level||s.level,m.display=!(!m.expanded||!s.display),"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(s.noLazyChildren=!(m.children&&m.children.length)),s.loading=m.loading)),_++,g.push(i.rowRender(n,t+_,s)),m){var o=u[a]||n[c];e(o,m)}}))}(u[f]||e[c],m)}return g}return this.rowRender(e,t)}}},Vi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"}},[e.multiple?i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("div",{staticClass:"el-table-filter__content"},[i("el-scrollbar",{attrs:{"wrap-class":"el-table-filter__wrap"}},[i("el-checkbox-group",{staticClass:"el-table-filter__checkbox-group",model:{value:e.filteredValue,callback:function(t){e.filteredValue=t},expression:"filteredValue"}},e._l(e.filters,(function(t){return i("el-checkbox",{key:t.value,attrs:{label:t.value}},[e._v(e._s(t.text))])})),1)],1)],1),i("div",{staticClass:"el-table-filter__bottom"},[i("button",{class:{"is-disabled":0===e.filteredValue.length},attrs:{disabled:0===e.filteredValue.length},on:{click:e.handleConfirm}},[e._v(e._s(e.t("el.table.confirmFilter")))]),i("button",{on:{click:e.handleReset}},[e._v(e._s(e.t("el.table.resetFilter")))])])]):i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("ul",{staticClass:"el-table-filter__list"},[i("li",{staticClass:"el-table-filter__list-item",class:{"is-active":void 0===e.filterValue||null===e.filterValue},on:{click:function(t){e.handleSelect(null)}}},[e._v(e._s(e.t("el.table.clearFilter")))]),e._l(e.filters,(function(t){return i("li",{key:t.value,staticClass:"el-table-filter__list-item",class:{"is-active":e.isActive(t)},attrs:{label:t.value},on:{click:function(i){e.handleSelect(t.value)}}},[e._v(e._s(t.text))])}))],2)])])};Vi._withStripped=!0;var zi=[];!di.a.prototype.$isServer&&document.addEventListener("click",(function(e){zi.forEach((function(t){var i=e.target;t&&t.$el&&(i===t.$el||t.$el.contains(i)||t.handleOutsideClick&&t.handleOutsideClick(e))}))}));var Ri=function(e){e&&zi.push(e)},Bi=function(e){-1!==zi.indexOf(e)&&zi.splice(e,1)},Hi=i(31),Wi=i.n(Hi),qi=r({name:"ElTableFilterPanel",mixins:[A.a,f.a],directives:{Clickoutside:j.a},components:{ElCheckbox:ri.a,ElCheckboxGroup:Wi.a,ElScrollbar:L.a},props:{placement:{type:String,default:"bottom-end"}},methods:{isActive:function(e){return e.value===this.filterValue},handleOutsideClick:function(){var e=this;setTimeout((function(){e.showPopper=!1}),16)},handleConfirm:function(){this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleReset:function(){this.filteredValue=[],this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleSelect:function(e){this.filterValue=e,null!=e?this.confirmFilter(this.filteredValue):this.confirmFilter([]),this.handleOutsideClick()},confirmFilter:function(e){this.table.store.commit("filterChange",{column:this.column,values:e}),this.table.store.updateAllSelected()}},data:function(){return{table:null,cell:null,column:null}},computed:{filters:function(){return this.column&&this.column.filters},filterValue:{get:function(){return(this.column.filteredValue||[])[0]},set:function(e){this.filteredValue&&(null!=e?this.filteredValue.splice(0,1,e):this.filteredValue.splice(0,1))}},filteredValue:{get:function(){return this.column&&this.column.filteredValue||[]},set:function(e){this.column&&(this.column.filteredValue=e)}},multiple:function(){return!this.column||this.column.filterMultiple}},mounted:function(){var e=this;this.popperElm=this.$el,this.referenceElm=this.cell,this.table.bodyWrapper.addEventListener("scroll",(function(){e.updatePopper()})),this.$watch("showPopper",(function(t){e.column&&(e.column.filterOpened=t),t?Ri(e):Bi(e)}))},watch:{showPopper:function(e){!0===e&&parseInt(this.popperJS._popper.style.zIndex,10)1;return r&&(this.$parent.isGroup=!0),e("table",{class:"el-table__header",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map((function(t){return e("col",{attrs:{name:t.id},key:t.id})})),this.hasGutter?e("col",{attrs:{name:"gutter"}}):""]),e("thead",{class:[{"is-group":r,"has-gutter":this.hasGutter}]},[this._l(n,(function(i,n){return e("tr",{style:t.getHeaderRowStyle(n),class:t.getHeaderRowClass(n)},[i.map((function(r,s){return e("th",{attrs:{colspan:r.colSpan,rowspan:r.rowSpan},on:{mousemove:function(e){return t.handleMouseMove(e,r)},mouseout:t.handleMouseOut,mousedown:function(e){return t.handleMouseDown(e,r)},click:function(e){return t.handleHeaderClick(e,r)},contextmenu:function(e){return t.handleHeaderContextMenu(e,r)}},style:t.getHeaderCellStyle(n,s,i,r),class:t.getHeaderCellClass(n,s,i,r),key:r.id},[e("div",{class:["cell",r.filteredValue&&r.filteredValue.length>0?"highlight":"",r.labelClassName]},[r.renderHeader?r.renderHeader.call(t._renderProxy,e,{column:r,$index:s,store:t.store,_self:t.$parent.$vnode.context}):r.label,r.sortable?e("span",{class:"caret-wrapper",on:{click:function(e){return t.handleSortClick(e,r)}}},[e("i",{class:"sort-caret ascending",on:{click:function(e){return t.handleSortClick(e,r,"ascending")}}}),e("i",{class:"sort-caret descending",on:{click:function(e){return t.handleSortClick(e,r,"descending")}}})]):"",r.filterable?e("span",{class:"el-table__column-filter-trigger",on:{click:function(e){return t.handleFilterClick(e,r)}}},[e("i",{class:["el-icon-arrow-down",r.filterOpened?"el-icon-arrow-up":""]})]):""])])})),t.hasGutter?e("th",{class:"el-table__cell gutter"}):""])}))])])},props:{fixed:String,store:{required:!0},border:Boolean,defaultSort:{type:Object,default:function(){return{prop:"",order:""}}}},components:{ElCheckbox:ri.a},computed:Gi({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},Pi({columns:"columns",isAllSelected:"isAllSelected",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),created:function(){this.filterPanels={}},mounted:function(){var e=this;this.$nextTick((function(){var t=e.defaultSort,i=t.prop,n=t.order;e.store.commit("sort",{prop:i,order:n,init:!0})}))},beforeDestroy:function(){var e=this.filterPanels;for(var t in e)e.hasOwnProperty(t)&&e[t]&&e[t].$destroy(!0)},methods:{isCellHidden:function(e,t){for(var i=0,n=0;n=this.leftFixedLeafCount:"right"===this.fixed?i=this.columnsCount-this.rightFixedLeafCount},getHeaderRowStyle:function(e){var t=this.table.headerRowStyle;return"function"==typeof t?t.call(null,{rowIndex:e}):t},getHeaderRowClass:function(e){var t=[],i=this.table.headerRowClassName;return"string"==typeof i?t.push(i):"function"==typeof i&&t.push(i.call(null,{rowIndex:e})),t.join(" ")},getHeaderCellStyle:function(e,t,i,n){var r=this.table.headerCellStyle;return"function"==typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):r},getHeaderCellClass:function(e,t,i,n){var r=[n.id,n.order,n.headerAlign,n.className,n.labelClassName];0===e&&this.isCellHidden(t,i)&&r.push("is-hidden"),n.children||r.push("is-leaf"),n.sortable&&r.push("is-sortable");var s=this.table.headerCellClassName;return"string"==typeof s?r.push(s):"function"==typeof s&&r.push(s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),r.push("el-table__cell"),r.join(" ")},toggleAllSelection:function(e){e.stopPropagation(),this.store.commit("toggleAllSelection")},handleFilterClick:function(e,t){e.stopPropagation();var i=e.target,n="TH"===i.tagName?i:i.parentNode;if(!Object(fe.hasClass)(n,"noclick")){n=n.querySelector(".el-table__column-filter-trigger")||n;var r=this.$parent,s=this.filterPanels[t.id];s&&t.filterOpened?s.showPopper=!1:(s||(s=new di.a(Ui),this.filterPanels[t.id]=s,t.filterPlacement&&(s.placement=t.filterPlacement),s.table=r,s.cell=n,s.column=t,!this.$isServer&&s.$mount(document.createElement("div"))),setTimeout((function(){s.showPopper=!0}),16))}},handleHeaderClick:function(e,t){!t.filters&&t.sortable?this.handleSortClick(e,t):t.filterable&&!t.sortable&&this.handleFilterClick(e,t),this.$parent.$emit("header-click",t,e)},handleHeaderContextMenu:function(e,t){this.$parent.$emit("header-contextmenu",t,e)},handleMouseDown:function(e,t){var i=this;if(!this.$isServer&&!(t.children&&t.children.length>0)&&this.draggingColumn&&this.border){this.dragging=!0,this.$parent.resizeProxyVisible=!0;var n=this.$parent,r=n.$el.getBoundingClientRect().left,s=this.$el.querySelector("th."+t.id),a=s.getBoundingClientRect(),o=a.left-r+30;Object(fe.addClass)(s,"noclick"),this.dragState={startMouseLeft:e.clientX,startLeft:a.right-r,startColumnLeft:a.left-r,tableLeft:r};var l=n.$refs.resizeProxy;l.style.left=this.dragState.startLeft+"px",document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};var u=function(e){var t=e.clientX-i.dragState.startMouseLeft,n=i.dragState.startLeft+t;l.style.left=Math.max(o,n)+"px"};document.addEventListener("mousemove",u),document.addEventListener("mouseup",(function r(){if(i.dragging){var a=i.dragState,o=a.startColumnLeft,c=a.startLeft,d=parseInt(l.style.left,10)-o;t.width=t.realWidth=d,n.$emit("header-dragend",t.width,c-o,t,e),i.store.scheduleLayout(),document.body.style.cursor="",i.dragging=!1,i.draggingColumn=null,i.dragState={},n.resizeProxyVisible=!1}document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",r),document.onselectstart=null,document.ondragstart=null,setTimeout((function(){Object(fe.removeClass)(s,"noclick")}),0)}))}},handleMouseMove:function(e,t){if(!(t.children&&t.children.length>0)){for(var i=e.target;i&&"TH"!==i.tagName;)i=i.parentNode;if(t&&t.resizable&&!this.dragging&&this.border){var n=i.getBoundingClientRect(),r=document.body.style;n.width>12&&n.right-e.pageX<8?(r.cursor="col-resize",Object(fe.hasClass)(i,"is-sortable")&&(i.style.cursor="col-resize"),this.draggingColumn=t):this.dragging||(r.cursor="",Object(fe.hasClass)(i,"is-sortable")&&(i.style.cursor="pointer"),this.draggingColumn=null)}}},handleMouseOut:function(){this.$isServer||(document.body.style.cursor="")},toggleOrder:function(e){var t=e.order,i=e.sortOrders;if(""===t)return i[0];var n=i.indexOf(t||null);return i[n>i.length-2?0:n+1]},handleSortClick:function(e,t,i){e.stopPropagation();for(var n=t.order===i?null:i||this.toggleOrder(t),r=e.target;r&&"TH"!==r.tagName;)r=r.parentNode;if(r&&"TH"===r.tagName&&Object(fe.hasClass)(r,"noclick"))Object(fe.removeClass)(r,"noclick");else if(t.sortable){var s=this.store.states,a=s.sortProp,o=void 0,l=s.sortingColumn;(l!==t||l===t&&null===l.order)&&(l&&(l.order=null),s.sortingColumn=t,a=t.property),o=t.order=n||null,s.sortProp=a,s.sortOrder=o,this.store.commit("changeSortCondition")}}},data:function(){return{draggingColumn:null,dragging:!1,dragState:{}}}},Xi=Object.assign||function(e){for(var t=1;t=this.leftFixedLeafCount;if("right"===this.fixed){for(var n=0,r=0;r=this.columnsCount-this.rightFixedCount)},getRowClasses:function(e,t){var i=[e.id,e.align,e.labelClassName];return e.className&&i.push(e.className),this.isCellHidden(t,this.columns,e)&&i.push("is-hidden"),e.children||i.push("is-leaf"),i}}},Qi=Object.assign||function(e){for(var t=1;t0){var n=i.scrollTop;t.pixelY<0&&0!==n&&e.preventDefault(),t.pixelY>0&&i.scrollHeight-i.clientHeight>n&&e.preventDefault(),i.scrollTop+=Math.ceil(t.pixelY/5)}else i.scrollLeft+=Math.ceil(t.pixelX/5)},handleHeaderFooterMousewheel:function(e,t){var i=t.pixelX,n=t.pixelY;Math.abs(i)>=Math.abs(n)&&(this.bodyWrapper.scrollLeft+=t.pixelX/5)},syncPostion:Object(si.throttle)(20,(function(){var e=this.bodyWrapper,t=e.scrollLeft,i=e.scrollTop,n=e.offsetWidth,r=e.scrollWidth,s=this.$refs,a=s.headerWrapper,o=s.footerWrapper,l=s.fixedBodyWrapper,u=s.rightFixedBodyWrapper;a&&(a.scrollLeft=t),o&&(o.scrollLeft=t),l&&(l.scrollTop=i),u&&(u.scrollTop=i);var c=r-n-1;this.scrollPosition=t>=c?"right":0===t?"left":"middle"})),bindEvents:function(){this.bodyWrapper.addEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(Lt.addResizeListener)(this.$el,this.resizeListener)},unbindEvents:function(){this.bodyWrapper.removeEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(Lt.removeResizeListener)(this.$el,this.resizeListener)},resizeListener:function(){if(this.$ready){var e=!1,t=this.$el,i=this.resizeState,n=i.width,r=i.height,s=t.offsetWidth;n!==s&&(e=!0);var a=t.offsetHeight;(this.height||this.shouldUpdateHeight)&&r!==a&&(e=!0),e&&(this.resizeState.width=s,this.resizeState.height=a,this.doLayout())}},doLayout:function(){this.shouldUpdateHeight&&this.layout.updateElsHeight(),this.layout.updateColumnsWidth()},sort:function(e,t){this.store.commit("sort",{prop:e,order:t})},toggleAllSelection:function(){this.store.commit("toggleAllSelection")}},computed:Qi({tableSize:function(){return this.size||(this.$ELEMENT||{}).size},bodyWrapper:function(){return this.$refs.bodyWrapper},shouldUpdateHeight:function(){return this.height||this.maxHeight||this.fixedColumns.length>0||this.rightFixedColumns.length>0},bodyWidth:function(){var e=this.layout,t=e.bodyWidth,i=e.scrollY,n=e.gutterWidth;return t?t-(i?n:0)+"px":""},bodyHeight:function(){var e=this.layout,t=e.headerHeight,i=void 0===t?0:t,n=e.bodyHeight,r=e.footerHeight,s=void 0===r?0:r;if(this.height)return{height:n?n+"px":""};if(this.maxHeight){var a=ki(this.maxHeight);if("number"==typeof a)return{"max-height":a-s-(this.showHeader?i:0)+"px"}}return{}},fixedBodyHeight:function(){if(this.height)return{height:this.layout.fixedBodyHeight?this.layout.fixedBodyHeight+"px":""};if(this.maxHeight){var e=ki(this.maxHeight);if("number"==typeof e)return e=this.layout.scrollX?e-this.layout.gutterWidth:e,this.showHeader&&(e-=this.layout.headerHeight),{"max-height":(e-=this.layout.footerHeight)+"px"}}return{}},fixedHeight:function(){return this.maxHeight?this.showSummary?{bottom:0}:{bottom:this.layout.scrollX&&this.data.length?this.layout.gutterWidth+"px":""}:this.showSummary?{height:this.layout.tableHeight?this.layout.tableHeight+"px":""}:{height:this.layout.viewportHeight?this.layout.viewportHeight+"px":""}},emptyBlockStyle:function(){if(this.data&&this.data.length)return null;var e="100%";return this.layout.appendHeight&&(e="calc(100% - "+this.layout.appendHeight+"px)"),{width:this.bodyWidth,height:e}}},Pi({selection:"selection",columns:"columns",tableData:"data",fixedColumns:"fixedColumns",rightFixedColumns:"rightFixedColumns"})),watch:{height:{immediate:!0,handler:function(e){this.layout.setHeight(e)}},maxHeight:{immediate:!0,handler:function(e){this.layout.setMaxHeight(e)}},currentRowKey:{immediate:!0,handler:function(e){this.rowKey&&this.store.setCurrentRowKey(e)}},data:{immediate:!0,handler:function(e){this.store.commit("setData",e)}},expandRowKeys:{immediate:!0,handler:function(e){e&&this.store.setExpandRowKeysAdapter(e)}}},created:function(){var e=this;this.tableId="el-table_"+Ji++,this.debouncedUpdateLayout=Object(si.debounce)(50,(function(){return e.doLayout()}))},mounted:function(){var e=this;this.bindEvents(),this.store.updateColumns(),this.doLayout(),this.resizeState={width:this.$el.offsetWidth,height:this.$el.offsetHeight},this.store.states.columns.forEach((function(t){t.filteredValue&&t.filteredValue.length&&e.store.commit("filterChange",{column:t,values:t.filteredValue,silent:!0})})),this.$ready=!0},destroyed:function(){this.unbindEvents()},data:function(){var e=this.treeProps,t=e.hasChildren,i=void 0===t?"hasChildren":t,n=e.children,r=void 0===n?"children":n;return this.store=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Table is required.");var i=new $i;return i.table=e,i.toggleAllSelection=$()(10,i._toggleAllSelection),Object.keys(t).forEach((function(e){i.states[e]=t[e]})),i}(this,{rowKey:this.rowKey,defaultExpandAll:this.defaultExpandAll,selectOnIndeterminate:this.selectOnIndeterminate,indent:this.indent,lazy:this.lazy,lazyColumnIdentifier:i,childrenColumnName:r}),{layout:new Ii({store:this.store,table:this,fit:this.fit,showHeader:this.showHeader}),isHidden:!1,renderExpanded:null,resizeProxyVisible:!1,resizeState:{width:null,height:null},isGroup:!1,scrollPosition:"left"}}},ii,[],!1,null,null,null);en.options.__file="packages/table/src/table.vue";var tn=en.exports;tn.install=function(e){e.component(tn.name,tn)};var nn=tn,rn={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:"",className:"el-table-column--selection"},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},sn={selection:{renderHeader:function(e,t){var i=t.store;return e("el-checkbox",{attrs:{disabled:i.states.data&&0===i.states.data.length,indeterminate:i.states.selection.length>0&&!this.isAllSelected,value:this.isAllSelected},nativeOn:{click:this.toggleAllSelection}})},renderCell:function(e,t){var i=t.row,n=t.column,r=t.store,s=t.$index;return e("el-checkbox",{nativeOn:{click:function(e){return e.stopPropagation()}},attrs:{value:r.isSelected(i),disabled:!!n.selectable&&!n.selectable.call(null,i,s)},on:{input:function(){r.commit("rowSelectedChanged",i)}}})},sortable:!1,resizable:!1},index:{renderHeader:function(e,t){return t.column.label||"#"},renderCell:function(e,t){var i=t.$index,n=i+1,r=t.column.index;return"number"==typeof r?n=i+r:"function"==typeof r&&(n=r(i)),e("div",[n])},sortable:!1},expand:{renderHeader:function(e,t){return t.column.label||""},renderCell:function(e,t){var i=t.row,n=t.store,r=["el-table__expand-icon"];n.states.expandRows.indexOf(i)>-1&&r.push("el-table__expand-icon--expanded");return e("div",{class:r,on:{click:function(e){e.stopPropagation(),n.toggleRowExpansion(i)}}},[e("i",{class:"el-icon el-icon-arrow-right"})])},sortable:!1,resizable:!1,className:"el-table__expand-column"}};function an(e,t){var i=t.row,n=t.column,r=t.$index,s=n.property,a=s&&Object(m.getPropByPath)(i,s).v;return n&&n.formatter?n.formatter(i,n,a,r):a}var on=Object.assign||function(e){for(var t=1;t-1}))}}},data:function(){return{isSubColumn:!1,columns:[]}},computed:{owner:function(){for(var e=this.$parent;e&&!e.tableId;)e=e.$parent;return e},columnOrTableParent:function(){for(var e=this.$parent;e&&!e.tableId&&!e.columnId;)e=e.$parent;return e},realWidth:function(){return xi(this.width)},realMinWidth:function(){return void 0!==(e=this.minWidth)&&(e=xi(e),isNaN(e)&&(e=80)),e;var e},realAlign:function(){return this.align?"is-"+this.align:null},realHeaderAlign:function(){return this.headerAlign?"is-"+this.headerAlign:this.realAlign}},methods:{getPropsData:function(){for(var e=this,t=arguments.length,i=Array(t),n=0;n3&&void 0!==arguments[3]?arguments[3]:"-";if(!e)return null;var r=(yn[i]||yn.default).parser,s=t||fn[i];return r(e,s,n)},wn=function(e,t,i){return e?(0,(yn[i]||yn.default).formatter)(e,t||fn[i]):null},Cn=function(e,t){var i=function(e,t){var i=e instanceof Date,n=t instanceof Date;return i&&n?e.getTime()===t.getTime():!i&&!n&&e===t},n=e instanceof Array,r=t instanceof Array;return n&&r?e.length===t.length&&e.every((function(e,n){return i(e,t[n])})):!n&&!r&&i(e,t)},Sn=function(e){return"string"==typeof e||e instanceof String},On=function(e){return null==e||Sn(e)||Array.isArray(e)&&2===e.length&&e.every(Sn)},Dn=r({mixins:[C.a,pn],inject:{elForm:{default:""},elFormItem:{default:""}},props:{size:String,format:String,valueFormat:String,readonly:Boolean,placeholder:String,startPlaceholder:String,endPlaceholder:String,prefixIcon:String,clearIcon:{type:String,default:"el-icon-circle-close"},name:{default:"",validator:On},disabled:Boolean,clearable:{type:Boolean,default:!0},id:{default:"",validator:On},popperClass:String,editable:{type:Boolean,default:!0},align:{type:String,default:"left"},value:{},defaultValue:{},defaultTime:{},rangeSeparator:{default:"-"},pickerOptions:{},unlinkPanels:Boolean,validateEvent:{type:Boolean,default:!0}},components:{ElInput:h.a},directives:{Clickoutside:j.a},data:function(){return{pickerVisible:!1,showClose:!1,userInput:null,valueOnOpen:null,unwatchPickerOptions:null}},watch:{pickerVisible:function(e){this.readonly||this.pickerDisabled||(e?(this.showPicker(),this.valueOnOpen=Array.isArray(this.value)?[].concat(this.value):this.value):(this.hidePicker(),this.emitChange(this.value),this.userInput=null,this.validateEvent&&this.dispatch("ElFormItem","el.form.blur"),this.$emit("blur",this),this.blur()))},parsedValue:{immediate:!0,handler:function(e){this.picker&&(this.picker.value=e)}},defaultValue:function(e){this.picker&&(this.picker.defaultValue=e)},value:function(e,t){Cn(e,t)||this.pickerVisible||!this.validateEvent||this.dispatch("ElFormItem","el.form.change",e)}},computed:{ranged:function(){return this.type.indexOf("range")>-1},reference:function(){var e=this.$refs.reference;return e.$el||e},refInput:function(){return this.reference?[].slice.call(this.reference.querySelectorAll("input")):[]},valueIsEmpty:function(){var e=this.value;if(Array.isArray(e)){for(var t=0,i=e.length;t0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.userInput=null,e.pickerVisible=e.picker.visible=i,e.emitInput(t),e.picker.resetView&&e.picker.resetView()})),this.picker.$on("select-range",(function(t,i,n){0!==e.refInput.length&&(n&&"min"!==n?"max"===n&&(e.refInput[1].setSelectionRange(t,i),e.refInput[1].focus()):(e.refInput[0].setSelectionRange(t,i),e.refInput[0].focus()))}))},unmountPicker:function(){this.picker&&(this.picker.$destroy(),this.picker.$off(),"function"==typeof this.unwatchPickerOptions&&this.unwatchPickerOptions(),this.picker.$el.parentNode.removeChild(this.picker.$el))},emitChange:function(e){Cn(e,this.valueOnOpen)||(this.$emit("change",e),this.valueOnOpen=e,this.validateEvent&&this.dispatch("ElFormItem","el.form.change",e))},emitInput:function(e){var t=this.formatToValue(e);Cn(this.value,t)||this.$emit("input",t)},isValidValue:function(e){return this.picker||this.mountPicker(),!this.picker.isValidValue||e&&this.picker.isValidValue(e)}}},dn,[],!1,null,null,null);Dn.options.__file="packages/date-picker/src/picker.vue";var En=Dn.exports,Tn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-enter":e.handleEnter,"after-leave":e.handleLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,(function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])})),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-picker__time-header"},[i("span",{staticClass:"el-date-picker__editor-wrap"},[i("el-input",{attrs:{placeholder:e.t("el.datepicker.selectDate"),value:e.visibleDate,size:"small"},on:{input:function(t){return e.userInputDate=t},change:e.handleVisibleDateChange}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleTimePickClose,expression:"handleTimePickClose"}],staticClass:"el-date-picker__editor-wrap"},[i("el-input",{ref:"input",attrs:{placeholder:e.t("el.datepicker.selectTime"),value:e.visibleTime,size:"small"},on:{focus:function(t){e.timePickerVisible=!0},input:function(t){return e.userInputTime=t},change:e.handleVisibleTimeChange}}),i("time-picker",{ref:"timepicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.timePickerVisible},on:{pick:e.handleTimePick,mounted:e.proxyTimePickerDataProperties}})],1)]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:"time"!==e.currentView,expression:"currentView !== 'time'"}],staticClass:"el-date-picker__header",class:{"el-date-picker__header--bordered":"year"===e.currentView||"month"===e.currentView}},[i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevYear")},on:{click:e.prevYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevMonth")},on:{click:e.prevMonth}}),i("span",{staticClass:"el-date-picker__header-label",attrs:{role:"button"},on:{click:e.showYearPicker}},[e._v(e._s(e.yearLabel))]),i("span",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-date-picker__header-label",class:{active:"month"===e.currentView},attrs:{role:"button"},on:{click:e.showMonthPicker}},[e._v(e._s(e.t("el.datepicker.month"+(e.month+1))))]),i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextYear")},on:{click:e.nextYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextMonth")},on:{click:e.nextMonth}})]),i("div",{staticClass:"el-picker-panel__content"},[i("date-table",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],attrs:{"selection-mode":e.selectionMode,"first-day-of-week":e.firstDayOfWeek,value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"cell-class-name":e.cellClassName,"disabled-date":e.disabledDate},on:{pick:e.handleDatePick}}),i("year-table",{directives:[{name:"show",rawName:"v-show",value:"year"===e.currentView,expression:"currentView === 'year'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleYearPick}}),i("month-table",{directives:[{name:"show",rawName:"v-show",value:"month"===e.currentView,expression:"currentView === 'month'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleMonthPick}})],1)])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.footerVisible&&"date"===e.currentView,expression:"footerVisible && currentView === 'date'"}],staticClass:"el-picker-panel__footer"},[i("el-button",{directives:[{name:"show",rawName:"v-show",value:"dates"!==e.selectionMode,expression:"selectionMode !== 'dates'"}],staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.changeToNow}},[e._v("\n "+e._s(e.t("el.datepicker.now"))+"\n ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini"},on:{click:e.confirm}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1)])])};Tn._withStripped=!0;var $n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-panel__content",class:{"has-seconds":e.showSeconds}},[i("time-spinner",{ref:"spinner",attrs:{"arrow-control":e.useArrow,"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,date:e.date},on:{change:e.handleChange,"select-range":e.setSelectionRange}})],1),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:e.handleCancel}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn",class:{confirm:!e.disabled},attrs:{type:"button"},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};$n._withStripped=!0;var Pn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-time-spinner",class:{"has-seconds":e.showSeconds}},[e.arrowControl?e._e():[i("el-scrollbar",{ref:"hours",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("hours")},mousemove:function(t){e.adjustCurrentSpinner("hours")}}},e._l(e.hoursList,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.hours,disabled:t},on:{click:function(i){e.handleClick("hours",{value:n,disabled:t})}}},[e._v(e._s(("0"+(e.amPmMode?n%12||12:n)).slice(-2))+e._s(e.amPm(n)))])})),0),i("el-scrollbar",{ref:"minutes",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("minutes")},mousemove:function(t){e.adjustCurrentSpinner("minutes")}}},e._l(e.minutesList,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.minutes,disabled:!t},on:{click:function(t){e.handleClick("minutes",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])})),0),i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.showSeconds,expression:"showSeconds"}],ref:"seconds",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("seconds")},mousemove:function(t){e.adjustCurrentSpinner("seconds")}}},e._l(60,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.seconds},on:{click:function(t){e.handleClick("seconds",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])})),0)],e.arrowControl?[i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("hours")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"hours",staticClass:"el-time-spinner__list"},e._l(e.arrowHourList,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.hours,disabled:e.hoursList[t]}},[e._v(e._s(void 0===t?"":("0"+(e.amPmMode?t%12||12:t)).slice(-2)+e.amPm(t)))])})),0)]),i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("minutes")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"minutes",staticClass:"el-time-spinner__list"},e._l(e.arrowMinuteList,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.minutes}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])})),0)]),e.showSeconds?i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("seconds")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"seconds",staticClass:"el-time-spinner__list"},e._l(e.arrowSecondList,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.seconds}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])})),0)]):e._e()]:e._e()],2)};Pn._withStripped=!0;var jn=r({components:{ElScrollbar:L.a},directives:{repeatClick:Ye},props:{date:{},defaultValue:{},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""}},computed:{hours:function(){return this.date.getHours()},minutes:function(){return this.date.getMinutes()},seconds:function(){return this.date.getSeconds()},hoursList:function(){return Object(hn.getRangeHours)(this.selectableRange)},minutesList:function(){return Object(hn.getRangeMinutes)(this.selectableRange,this.hours)},arrowHourList:function(){var e=this.hours;return[e>0?e-1:void 0,e,e<23?e+1:void 0]},arrowMinuteList:function(){var e=this.minutes;return[e>0?e-1:void 0,e,e<59?e+1:void 0]},arrowSecondList:function(){var e=this.seconds;return[e>0?e-1:void 0,e,e<59?e+1:void 0]}},data:function(){return{selectableRange:[],currentScrollbar:null}},mounted:function(){var e=this;this.$nextTick((function(){!e.arrowControl&&e.bindScrollEvent()}))},methods:{increase:function(){this.scrollDown(1)},decrease:function(){this.scrollDown(-1)},modifyDateField:function(e,t){switch(e){case"hours":this.$emit("change",Object(hn.modifyTime)(this.date,t,this.minutes,this.seconds));break;case"minutes":this.$emit("change",Object(hn.modifyTime)(this.date,this.hours,t,this.seconds));break;case"seconds":this.$emit("change",Object(hn.modifyTime)(this.date,this.hours,this.minutes,t))}},handleClick:function(e,t){var i=t.value;t.disabled||(this.modifyDateField(e,i),this.emitSelectRange(e),this.adjustSpinner(e,i))},emitSelectRange:function(e){"hours"===e?this.$emit("select-range",0,2):"minutes"===e?this.$emit("select-range",3,5):"seconds"===e&&this.$emit("select-range",6,8),this.currentScrollbar=e},bindScrollEvent:function(){var e=this,t=function(t){e.$refs[t].wrap.onscroll=function(i){e.handleScroll(t,i)}};t("hours"),t("minutes"),t("seconds")},handleScroll:function(e){var t=Math.min(Math.round((this.$refs[e].wrap.scrollTop-(.5*this.scrollBarHeight(e)-10)/this.typeItemHeight(e)+3)/this.typeItemHeight(e)),"hours"===e?23:59);this.modifyDateField(e,t)},adjustSpinners:function(){this.adjustSpinner("hours",this.hours),this.adjustSpinner("minutes",this.minutes),this.adjustSpinner("seconds",this.seconds)},adjustCurrentSpinner:function(e){this.adjustSpinner(e,this[e])},adjustSpinner:function(e,t){if(!this.arrowControl){var i=this.$refs[e].wrap;i&&(i.scrollTop=Math.max(0,t*this.typeItemHeight(e)))}},scrollDown:function(e){var t=this;this.currentScrollbar||this.emitSelectRange("hours");var i=this.currentScrollbar,n=this.hoursList,r=this[i];if("hours"===this.currentScrollbar){var s=Math.abs(e);e=e>0?1:-1;for(var a=n.length;a--&&s;)n[r=(r+e+n.length)%n.length]||s--;if(n[r])return}else r=(r+e+60)%60;this.modifyDateField(i,r),this.adjustSpinner(i,r),this.$nextTick((function(){return t.emitSelectRange(t.currentScrollbar)}))},amPm:function(e){if(!("a"===this.amPmMode.toLowerCase()))return"";var t=e<12?" am":" pm";return"A"===this.amPmMode&&(t=t.toUpperCase()),t},typeItemHeight:function(e){return this.$refs[e].$el.querySelector("li").offsetHeight},scrollBarHeight:function(e){return this.$refs[e].$el.offsetHeight}}},Pn,[],!1,null,null,null);jn.options.__file="packages/date-picker/src/basic/time-spinner.vue";var Mn=jn.exports,In=r({mixins:[f.a],components:{TimeSpinner:Mn},props:{visible:Boolean,timeArrowControl:Boolean},watch:{visible:function(e){var t=this;e?(this.oldValue=this.value,this.$nextTick((function(){return t.$refs.spinner.emitSelectRange("hours")}))):this.needInitAdjust=!0},value:function(e){var t=this,i=void 0;e instanceof Date?i=Object(hn.limitTimeRange)(e,this.selectableRange,this.format):e||(i=this.defaultValue?new Date(this.defaultValue):new Date),this.date=i,this.visible&&this.needInitAdjust&&(this.$nextTick((function(e){return t.adjustSpinners()})),this.needInitAdjust=!1)},selectableRange:function(e){this.$refs.spinner.selectableRange=e},defaultValue:function(e){Object(hn.isDate)(this.value)||(this.date=e?new Date(e):new Date)}},data:function(){return{popperClass:"",format:"HH:mm:ss",value:"",defaultValue:null,date:new Date,oldValue:new Date,selectableRange:[],selectionRange:[0,2],disabled:!1,arrowControl:!1,needInitAdjust:!0}},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},useArrow:function(){return this.arrowControl||this.timeArrowControl||!1},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},methods:{handleCancel:function(){this.$emit("pick",this.oldValue,!1)},handleChange:function(e){this.visible&&(this.date=Object(hn.clearMilliseconds)(e),this.isValidValue(this.date)&&this.$emit("pick",this.date,!0))},setSelectionRange:function(e,t){this.$emit("select-range",e,t),this.selectionRange=[e,t]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(!t){var i=Object(hn.clearMilliseconds)(Object(hn.limitTimeRange)(this.date,this.selectableRange,this.format));this.$emit("pick",i,e,t)}},handleKeydown:function(e){var t=e.keyCode,i={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var n=i[t];return this.changeSelectionRange(n),void e.preventDefault()}if(38===t||40===t){var r=i[t];return this.$refs.spinner.scrollDown(r),void e.preventDefault()}},isValidValue:function(e){return Object(hn.timeWithinRange)(e,this.selectableRange,this.format)},adjustSpinners:function(){return this.$refs.spinner.adjustSpinners()},changeSelectionRange:function(e){var t=[0,3].concat(this.showSeconds?[6]:[]),i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length;this.$refs.spinner.emitSelectRange(i[n])}},mounted:function(){var e=this;this.$nextTick((function(){return e.handleConfirm(!0,!0)})),this.$emit("mounted")}},$n,[],!1,null,null,null);In.options.__file="packages/date-picker/src/panel/time.vue";var An=In.exports,Nn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-year-table",on:{click:e.handleYearTableClick}},[i("tbody",[i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+0)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+1)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+1))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+2)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+2))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+3)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+3))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+4)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+4))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+5)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+5))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+6)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+6))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+7)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+7))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+8)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+8))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+9)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+9))])]),i("td"),i("td")])])])};Nn._withStripped=!0;var Ln=r({props:{disabledDate:{},value:{},defaultValue:{validator:function(e){return null===e||e instanceof Date&&Object(hn.isDate)(e)}},date:{}},computed:{startYear:function(){return 10*Math.floor(this.date.getFullYear()/10)}},methods:{getCellStyle:function(e){var t={},i=new Date;return t.disabled="function"==typeof this.disabledDate&&function(e){var t=Object(hn.getDayCountOfYear)(e),i=new Date(e,0,1);return Object(hn.range)(t).map((function(e){return Object(hn.nextDate)(i,e)}))}(e).every(this.disabledDate),t.current=Object(m.arrayFindIndex)(Object(m.coerceTruthyValueToArray)(this.value),(function(t){return t.getFullYear()===e}))>=0,t.today=i.getFullYear()===e,t.default=this.defaultValue&&this.defaultValue.getFullYear()===e,t},handleYearTableClick:function(e){var t=e.target;if("A"===t.tagName){if(Object(fe.hasClass)(t.parentNode,"disabled"))return;var i=t.textContent||t.innerText;this.$emit("pick",Number(i))}}}},Nn,[],!1,null,null,null);Ln.options.__file="packages/date-picker/src/basic/year-table.vue";var Fn=Ln.exports,Vn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-month-table",on:{click:e.handleMonthTableClick,mousemove:e.handleMouseMove}},[i("tbody",e._l(e.rows,(function(t,n){return i("tr",{key:n},e._l(t,(function(t,n){return i("td",{key:n,class:e.getCellStyle(t)},[i("div",[i("a",{staticClass:"cell"},[e._v(e._s(e.t("el.datepicker.months."+e.months[t.text])))])])])})),0)})),0)])};Vn._withStripped=!0;var zn=function(e){return new Date(e.getFullYear(),e.getMonth())},Rn=function(e){return"number"==typeof e||"string"==typeof e?zn(new Date(e)).getTime():e instanceof Date?zn(e).getTime():NaN},Bn=r({props:{disabledDate:{},value:{},selectionMode:{default:"month"},minDate:{},maxDate:{},defaultValue:{validator:function(e){return null===e||Object(hn.isDate)(e)||Array.isArray(e)&&e.every(hn.isDate)}},date:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},mixins:[f.a],watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Rn(e)!==Rn(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Rn(e)!==Rn(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{months:["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],tableRows:[[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.date.getFullYear()===i.getFullYear()&&Number(e.text)===i.getMonth()},getCellStyle:function(e){var t=this,i={},n=this.date.getFullYear(),r=new Date,s=e.text,a=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[];return i.disabled="function"==typeof this.disabledDate&&function(e,t){var i=Object(hn.getDayCountOfMonth)(e,t),n=new Date(e,t,1);return Object(hn.range)(i).map((function(e){return Object(hn.nextDate)(n,e)}))}(n,s).every(this.disabledDate),i.current=Object(m.arrayFindIndex)(Object(m.coerceTruthyValueToArray)(this.value),(function(e){return e.getFullYear()===n&&e.getMonth()===s}))>=0,i.today=r.getFullYear()===n&&r.getMonth()===s,i.default=a.some((function(i){return t.cellMatchesDate(e,i)})),e.inRange&&(i["in-range"]=!0,e.start&&(i["start-date"]=!0),e.end&&(i["end-date"]=!0)),i},getMonthOfCell:function(e){var t=this.date.getFullYear();return new Date(t,e,1)},markRange:function(e,t){e=Rn(e),t=Rn(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.rows,r=0,s=n.length;r=e&&d<=t,u.start=e&&d===e,u.end=t&&d===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getMonthOfCell(4*i+n)}}))}}},handleMonthTableClick:function(e){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName&&!Object(fe.hasClass)(t,"disabled")){var i=t.cellIndex,n=4*t.parentNode.rowIndex+i,r=this.getMonthOfCell(n);"range"===this.selectionMode?this.rangeState.selecting?(r>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:r}):this.$emit("pick",{minDate:r,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:r,maxDate:null}),this.rangeState.selecting=!0):this.$emit("pick",n)}}},computed:{rows:function(){for(var e=this,t=this.tableRows,i=this.disabledDate,n=[],r=Rn(new Date),s=0;s<3;s++)for(var a=t[s],o=function(t){var o=a[t];o||(o={row:s,column:t,type:"normal",inRange:!1,start:!1,end:!1}),o.type="normal";var l=4*s+t,u=new Date(e.date.getFullYear(),l).getTime();o.inRange=u>=Rn(e.minDate)&&u<=Rn(e.maxDate),o.start=e.minDate&&u===Rn(e.minDate),o.end=e.maxDate&&u===Rn(e.maxDate),u===r&&(o.type="today"),o.text=l;var c=new Date(u);o.disabled="function"==typeof i&&i(c),o.selected=Object(m.arrayFind)(n,(function(e){return e.getTime()===c.getTime()})),e.$set(a,t,o)},l=0;l<4;l++)o(l);return t}}},Vn,[],!1,null,null,null);Bn.options.__file="packages/date-picker/src/basic/month-table.vue";var Hn=Bn.exports,Wn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-date-table",class:{"is-week-mode":"week"===e.selectionMode},attrs:{cellspacing:"0",cellpadding:"0"},on:{click:e.handleClick,mousemove:e.handleMouseMove}},[i("tbody",[i("tr",[e.showWeekNumber?i("th",[e._v(e._s(e.t("el.datepicker.week")))]):e._e(),e._l(e.WEEKS,(function(t,n){return i("th",{key:n},[e._v(e._s(e.t("el.datepicker.weeks."+t)))])}))],2),e._l(e.rows,(function(t,n){return i("tr",{key:n,staticClass:"el-date-table__row",class:{current:e.isWeekActive(t[1])}},e._l(t,(function(t,n){return i("td",{key:n,class:e.getCellClasses(t)},[i("div",[i("span",[e._v("\n "+e._s(t.text)+"\n ")])])])})),0)}))],2)])};Wn._withStripped=!0;var qn=["sun","mon","tue","wed","thu","fri","sat"],Un=function(e){return"number"==typeof e||"string"==typeof e?Object(hn.clearTime)(new Date(e)).getTime():e instanceof Date?Object(hn.clearTime)(e).getTime():NaN},Gn=r({mixins:[f.a],props:{firstDayOfWeek:{default:7,type:Number,validator:function(e){return e>=1&&e<=7}},value:{},defaultValue:{validator:function(e){return null===e||Object(hn.isDate)(e)||Array.isArray(e)&&e.every(hn.isDate)}},date:{},selectionMode:{default:"day"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{},cellClassName:{},minDate:{},maxDate:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},computed:{offsetDay:function(){var e=this.firstDayOfWeek;return e>3?7-e:-e},WEEKS:function(){var e=this.firstDayOfWeek;return qn.concat(qn).slice(e,e+7)},year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},startDate:function(){return Object(hn.getStartDateOfMonth)(this.year,this.month)},rows:function(){var e=this,t=new Date(this.year,this.month,1),i=Object(hn.getFirstDayOfMonth)(t),n=Object(hn.getDayCountOfMonth)(t.getFullYear(),t.getMonth()),r=Object(hn.getDayCountOfMonth)(t.getFullYear(),0===t.getMonth()?11:t.getMonth()-1);i=0===i?7:i;for(var s=this.offsetDay,a=this.tableRows,o=1,l=this.startDate,u=this.disabledDate,c=this.cellClassName,d="dates"===this.selectionMode?Object(m.coerceTruthyValueToArray)(this.value):[],h=Un(new Date),p=0;p<6;p++){var f=a[p];this.showWeekNumber&&(f[0]||(f[0]={type:"week",text:Object(hn.getWeekNumber)(Object(hn.nextDate)(l,7*p+1))}));for(var v=function(t){var a=f[e.showWeekNumber?t+1:t];a||(a={row:p,column:t,type:"normal",inRange:!1,start:!1,end:!1}),a.type="normal";var v=7*p+t,g=Object(hn.nextDate)(l,v-s).getTime();if(a.inRange=g>=Un(e.minDate)&&g<=Un(e.maxDate),a.start=e.minDate&&g===Un(e.minDate),a.end=e.maxDate&&g===Un(e.maxDate),g===h&&(a.type="today"),p>=0&&p<=1){var _=i+s<0?7+i+s:i+s;t+7*p>=_?a.text=o++:(a.text=r-(_-t%7)+1+7*p,a.type="prev-month")}else o<=n?a.text=o++:(a.text=o++-n,a.type="next-month");var b=new Date(g);a.disabled="function"==typeof u&&u(b),a.selected=Object(m.arrayFind)(d,(function(e){return e.getTime()===b.getTime()})),a.customClass="function"==typeof c&&c(b),e.$set(f,e.showWeekNumber?t+1:t,a)},g=0;g<7;g++)v(g);if("week"===this.selectionMode){var _=this.showWeekNumber?1:0,b=this.showWeekNumber?7:6,y=this.isWeekActive(f[_+1]);f[_].inRange=y,f[_].start=y,f[b].inRange=y,f[b].end=y}}return a}},watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Un(e)!==Un(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Un(e)!==Un(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{tableRows:[[],[],[],[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.year===i.getFullYear()&&this.month===i.getMonth()&&Number(e.text)===i.getDate()},getCellClasses:function(e){var t=this,i=this.selectionMode,n=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[],r=[];return"normal"!==e.type&&"today"!==e.type||e.disabled?r.push(e.type):(r.push("available"),"today"===e.type&&r.push("today")),"normal"===e.type&&n.some((function(i){return t.cellMatchesDate(e,i)}))&&r.push("default"),"day"!==i||"normal"!==e.type&&"today"!==e.type||!this.cellMatchesDate(e,this.value)||r.push("current"),!e.inRange||"normal"!==e.type&&"today"!==e.type&&"week"!==this.selectionMode||(r.push("in-range"),e.start&&r.push("start-date"),e.end&&r.push("end-date")),e.disabled&&r.push("disabled"),e.selected&&r.push("selected"),e.customClass&&r.push(e.customClass),r.join(" ")},getDateOfCell:function(e,t){var i=7*e+(t-(this.showWeekNumber?1:0))-this.offsetDay;return Object(hn.nextDate)(this.startDate,i)},isWeekActive:function(e){if("week"!==this.selectionMode)return!1;var t=new Date(this.year,this.month,1),i=t.getFullYear(),n=t.getMonth();if("prev-month"===e.type&&(t.setMonth(0===n?11:n-1),t.setFullYear(0===n?i-1:i)),"next-month"===e.type&&(t.setMonth(11===n?0:n+1),t.setFullYear(11===n?i+1:i)),t.setDate(parseInt(e.text,10)),Object(hn.isDate)(this.value)){var r=(this.value.getDay()-this.firstDayOfWeek+7)%7-1;return Object(hn.prevDate)(this.value,r).getTime()===t.getTime()}return!1},markRange:function(e,t){e=Un(e),t=Un(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.startDate,r=this.rows,s=0,a=r.length;s=e&&h<=t,c.start=e&&h===e,c.end=t&&h===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getDateOfCell(i,n)}}))}}},handleClick:function(e){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n="week"===this.selectionMode?1:t.cellIndex,r=this.rows[i][n];if(!r.disabled&&"week"!==r.type){var s,a,o,l=this.getDateOfCell(i,n);if("range"===this.selectionMode)this.rangeState.selecting?(l>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:l}):this.$emit("pick",{minDate:l,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:l,maxDate:null}),this.rangeState.selecting=!0);else if("day"===this.selectionMode)this.$emit("pick",l);else if("week"===this.selectionMode){var u=Object(hn.getWeekNumber)(l),c=l.getFullYear()+"w"+u;this.$emit("pick",{year:l.getFullYear(),week:u,value:c,date:l})}else if("dates"===this.selectionMode){var d=this.value||[],h=r.selected?(s=d,(o="function"==typeof(a=function(e){return e.getTime()===l.getTime()})?Object(m.arrayFindIndex)(s,a):s.indexOf(a))>=0?[].concat(s.slice(0,o),s.slice(o+1)):s):[].concat(d,[l]);this.$emit("pick",h)}}}}}},Wn,[],!1,null,null,null);Gn.options.__file="packages/date-picker/src/basic/date-table.vue";var Yn=Gn.exports,Kn=r({mixins:[f.a],directives:{Clickoutside:j.a},watch:{showTime:function(e){var t=this;e&&this.$nextTick((function(e){var i=t.$refs.input.$el;i&&(t.pickerWidth=i.getBoundingClientRect().width+10)}))},value:function(e){"dates"===this.selectionMode&&this.value||(Object(hn.isDate)(e)?this.date=new Date(e):this.date=this.getDefaultValue())},defaultValue:function(e){Object(hn.isDate)(this.value)||(this.date=e?new Date(e):new Date)},timePickerVisible:function(e){var t=this;e&&this.$nextTick((function(){return t.$refs.timepicker.adjustSpinners()}))},selectionMode:function(e){"month"===e?"year"===this.currentView&&"month"===this.currentView||(this.currentView="month"):"dates"===e&&(this.currentView="date")}},methods:{proxyTimePickerDataProperties:function(){var e,t=this,i=function(e){t.$refs.timepicker.value=e},n=function(e){t.$refs.timepicker.date=e},r=function(e){t.$refs.timepicker.selectableRange=e};this.$watch("value",i),this.$watch("date",n),this.$watch("selectableRange",r),e=this.timeFormat,t.$refs.timepicker.format=e,i(this.value),n(this.date),r(this.selectableRange)},handleClear:function(){this.date=this.getDefaultValue(),this.$emit("pick",null)},emit:function(e){for(var t=this,i=arguments.length,n=Array(i>1?i-1:0),r=1;r0)||Object(hn.timeWithinRange)(e,this.selectableRange,this.format||"HH:mm:ss")}},components:{TimePicker:An,YearTable:Fn,MonthTable:Hn,DateTable:Yn,ElInput:h.a,ElButton:U.a},data:function(){return{popperClass:"",date:new Date,value:"",defaultValue:null,defaultTime:null,showTime:!1,selectionMode:"day",shortcuts:"",visible:!1,currentView:"date",disabledDate:"",cellClassName:"",selectableRange:[],firstDayOfWeek:7,showWeekNumber:!1,timePickerVisible:!1,format:"",arrowControl:!1,userInputDate:null,userInputTime:null}},computed:{year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},week:function(){return Object(hn.getWeekNumber)(this.date)},monthDate:function(){return this.date.getDate()},footerVisible:function(){return this.showTime||"dates"===this.selectionMode},visibleTime:function(){return null!==this.userInputTime?this.userInputTime:Object(hn.formatDate)(this.value||this.defaultValue,this.timeFormat)},visibleDate:function(){return null!==this.userInputDate?this.userInputDate:Object(hn.formatDate)(this.value||this.defaultValue,this.dateFormat)},yearLabel:function(){var e=this.t("el.datepicker.year");if("year"===this.currentView){var t=10*Math.floor(this.year/10);return e?t+" "+e+" - "+(t+9)+" "+e:t+" - "+(t+9)}return this.year+" "+e},timeFormat:function(){return this.format?Object(hn.extractTimeFormat)(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(hn.extractDateFormat)(this.format):"yyyy-MM-dd"}}},Tn,[],!1,null,null,null);Kn.options.__file="packages/date-picker/src/panel/date.vue";var Xn=Kn.exports,Zn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,(function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])})),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-range-picker__time-header"},[i("span",{staticClass:"el-date-range-picker__editors-wrap"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{ref:"minInput",staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startDate"),value:e.minVisibleDate},on:{input:function(t){return e.handleDateInput(t,"min")},change:function(t){return e.handleDateChange(t,"min")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMinTimeClose,expression:"handleMinTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startTime"),value:e.minVisibleTime},on:{focus:function(t){e.minTimePickerVisible=!0},input:function(t){return e.handleTimeInput(t,"min")},change:function(t){return e.handleTimeChange(t,"min")}}}),i("time-picker",{ref:"minTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.minTimePickerVisible},on:{pick:e.handleMinTimePick,mounted:function(t){e.$refs.minTimePicker.format=e.timeFormat}}})],1)]),i("span",{staticClass:"el-icon-arrow-right"}),i("span",{staticClass:"el-date-range-picker__editors-wrap is-right"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endDate"),value:e.maxVisibleDate,readonly:!e.minDate},on:{input:function(t){return e.handleDateInput(t,"max")},change:function(t){return e.handleDateChange(t,"max")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMaxTimeClose,expression:"handleMaxTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endTime"),value:e.maxVisibleTime,readonly:!e.minDate},on:{focus:function(t){e.minDate&&(e.maxTimePickerVisible=!0)},input:function(t){return e.handleTimeInput(t,"max")},change:function(t){return e.handleTimeChange(t,"max")}}}),i("time-picker",{ref:"maxTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.maxTimePickerVisible},on:{pick:e.handleMaxTimePick,mounted:function(t){e.$refs.maxTimePicker.format=e.timeFormat}}})],1)])]):e._e(),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevMonth}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.leftNextMonth}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.rightPrevMonth}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",attrs:{type:"button"},on:{click:e.rightNextMonth}}),i("div",[e._v(e._s(e.rightLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2),e.showTime?i("div",{staticClass:"el-picker-panel__footer"},[i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.handleClear}},[e._v("\n "+e._s(e.t("el.datepicker.clear"))+"\n ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm(!1)}}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1):e._e()])])};Zn._withStripped=!0;var Qn=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(hn.nextDate)(new Date(e),1)]:[new Date,Object(hn.nextDate)(new Date,1)]},Jn=r({mixins:[f.a],directives:{Clickoutside:j.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.leftDate.getMonth()+1))},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.rightDate.getMonth()+1))},leftYear:function(){return this.leftDate.getFullYear()},leftMonth:function(){return this.leftDate.getMonth()},leftMonthDate:function(){return this.leftDate.getDate()},rightYear:function(){return this.rightDate.getFullYear()},rightMonth:function(){return this.rightDate.getMonth()},rightMonthDate:function(){return this.rightDate.getDate()},minVisibleDate:function(){return null!==this.dateUserInput.min?this.dateUserInput.min:this.minDate?Object(hn.formatDate)(this.minDate,this.dateFormat):""},maxVisibleDate:function(){return null!==this.dateUserInput.max?this.dateUserInput.max:this.maxDate||this.minDate?Object(hn.formatDate)(this.maxDate||this.minDate,this.dateFormat):""},minVisibleTime:function(){return null!==this.timeUserInput.min?this.timeUserInput.min:this.minDate?Object(hn.formatDate)(this.minDate,this.timeFormat):""},maxVisibleTime:function(){return null!==this.timeUserInput.max?this.timeUserInput.max:this.maxDate||this.minDate?Object(hn.formatDate)(this.maxDate||this.minDate,this.timeFormat):""},timeFormat:function(){return this.format?Object(hn.extractTimeFormat)(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(hn.extractDateFormat)(this.format):"yyyy-MM-dd"},enableMonthArrow:function(){var e=(this.leftMonth+1)%12,t=this.leftMonth+1>=12?1:0;return this.unlinkPanels&&new Date(this.leftYear+t,e)=12}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(hn.nextMonth)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},showTime:!1,shortcuts:"",visible:"",disabledDate:"",cellClassName:"",firstDayOfWeek:7,minTimePickerVisible:!1,maxTimePickerVisible:!1,format:"",arrowControl:!1,unlinkPanels:!1,dateUserInput:{min:null,max:null},timeUserInput:{min:null,max:null}}},watch:{minDate:function(e){var t=this;this.dateUserInput.min=null,this.timeUserInput.min=null,this.$nextTick((function(){if(t.$refs.maxTimePicker&&t.maxDate&&t.maxDatethis.maxDate&&(this.maxDate=this.minDate)):(this.maxDate=Object(hn.modifyDate)(this.maxDate,i.getFullYear(),i.getMonth(),i.getDate()),this.maxDatethis.maxDate&&(this.maxDate=this.minDate),this.$refs.minTimePicker.value=this.minDate,this.minTimePickerVisible=!1):(this.maxDate=Object(hn.modifyTime)(this.maxDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.maxDate1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],r=Object(hn.modifyWithTimeString)(e.minDate,n[0]),s=Object(hn.modifyWithTimeString)(e.maxDate,n[1]);this.maxDate===s&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=s,this.minDate=r,setTimeout((function(){t.maxDate=s,t.minDate=r}),10),i&&!this.showTime&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleMinTimePick:function(e,t,i){this.minDate=this.minDate||new Date,e&&(this.minDate=Object(hn.modifyTime)(this.minDate,e.getHours(),e.getMinutes(),e.getSeconds())),i||(this.minTimePickerVisible=t),(!this.maxDate||this.maxDate&&this.maxDate.getTime()this.maxDate.getTime()&&(this.minDate=new Date(this.maxDate))},handleMaxTimeClose:function(){this.maxTimePickerVisible=!1},leftPrevYear:function(){this.leftDate=Object(hn.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(hn.nextMonth)(this.leftDate))},leftPrevMonth:function(){this.leftDate=Object(hn.prevMonth)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(hn.nextMonth)(this.leftDate))},rightNextYear:function(){this.unlinkPanels?this.rightDate=Object(hn.nextYear)(this.rightDate):(this.leftDate=Object(hn.nextYear)(this.leftDate),this.rightDate=Object(hn.nextMonth)(this.leftDate))},rightNextMonth:function(){this.unlinkPanels?this.rightDate=Object(hn.nextMonth)(this.rightDate):(this.leftDate=Object(hn.nextMonth)(this.leftDate),this.rightDate=Object(hn.nextMonth)(this.leftDate))},leftNextYear:function(){this.leftDate=Object(hn.nextYear)(this.leftDate)},leftNextMonth:function(){this.leftDate=Object(hn.nextMonth)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(hn.prevYear)(this.rightDate)},rightPrevMonth:function(){this.rightDate=Object(hn.prevMonth)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(hn.isDate)(e[0])&&Object(hn.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate&&null==this.maxDate&&(this.rangeState.selecting=!1),this.minDate=this.value&&Object(hn.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(hn.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{TimePicker:An,DateTable:Yn,ElInput:h.a,ElButton:U.a}},Zn,[],!1,null,null,null);Jn.options.__file="packages/date-picker/src/panel/date-range.vue";var er=Jn.exports,tr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,(function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])})),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("div",[e._v(e._s(e.rightLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2)])])};tr._withStripped=!0;var ir=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(hn.nextMonth)(new Date(e))]:[new Date,Object(hn.nextMonth)(new Date)]},nr=r({mixins:[f.a],directives:{Clickoutside:j.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")},leftYear:function(){return this.leftDate.getFullYear()},rightYear:function(){return this.rightDate.getFullYear()===this.leftDate.getFullYear()?this.leftDate.getFullYear()+1:this.rightDate.getFullYear()},enableYearArrow:function(){return this.unlinkPanels&&this.rightYear>this.leftYear+1}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(hn.nextYear)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},shortcuts:"",visible:"",disabledDate:"",format:"",arrowControl:!1,unlinkPanels:!1}},watch:{value:function(e){if(e){if(Array.isArray(e))if(this.minDate=Object(hn.isDate)(e[0])?new Date(e[0]):null,this.maxDate=Object(hn.isDate)(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),i=this.maxDate.getFullYear();this.rightDate=t===i?Object(hn.nextYear)(this.maxDate):this.maxDate}else this.rightDate=Object(hn.nextYear)(this.leftDate);else this.leftDate=ir(this.defaultValue)[0],this.rightDate=Object(hn.nextYear)(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=ir(e),i=t[0],n=t[1];this.leftDate=i,this.rightDate=e&&e[1]&&i.getFullYear()!==n.getFullYear()&&this.unlinkPanels?n:Object(hn.nextYear)(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=ir(this.defaultValue)[0],this.rightDate=Object(hn.nextYear)(this.leftDate),this.$emit("pick",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleRangePick:function(e){var t=this,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],r=Object(hn.modifyWithTimeString)(e.minDate,n[0]),s=Object(hn.modifyWithTimeString)(e.maxDate,n[1]);this.maxDate===s&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=s,this.minDate=r,setTimeout((function(){t.maxDate=s,t.minDate=r}),10),i&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},leftPrevYear:function(){this.leftDate=Object(hn.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(hn.prevYear)(this.rightDate))},rightNextYear:function(){this.unlinkPanels||(this.leftDate=Object(hn.nextYear)(this.leftDate)),this.rightDate=Object(hn.nextYear)(this.rightDate)},leftNextYear:function(){this.leftDate=Object(hn.nextYear)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(hn.prevYear)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(hn.isDate)(e[0])&&Object(hn.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&Object(hn.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(hn.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{MonthTable:Hn,ElInput:h.a,ElButton:U.a}},tr,[],!1,null,null,null);nr.options.__file="packages/date-picker/src/panel/month-range.vue";var rr=nr.exports,sr=function(e){return"daterange"===e||"datetimerange"===e?er:"monthrange"===e?rr:Xn},ar={mixins:[En],name:"ElDatePicker",props:{type:{type:String,default:"date"},timeArrowControl:Boolean},watch:{type:function(e){this.picker?(this.unmountPicker(),this.panel=sr(e),this.mountPicker()):this.panel=sr(e)}},created:function(){this.panel=sr(this.type)},install:function(e){e.component(ar.name,ar)}},or=ar,lr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],ref:"popper",staticClass:"el-picker-panel time-select el-popper",class:e.popperClass,style:{width:e.width+"px"}},[i("el-scrollbar",{attrs:{noresize:"","wrap-class":"el-picker-panel__content"}},e._l(e.items,(function(t){return i("div",{key:t.value,staticClass:"time-select-item",class:{selected:e.value===t.value,disabled:t.disabled,default:t.value===e.defaultValue},attrs:{disabled:t.disabled},on:{click:function(i){e.handleClick(t)}}},[e._v(e._s(t.value))])})),0)],1)])};lr._withStripped=!0;var ur=function(e){var t=(e||"").split(":");return t.length>=2?{hours:parseInt(t[0],10),minutes:parseInt(t[1],10)}:null},cr=function(e,t){var i=ur(e),n=ur(t),r=i.minutes+60*i.hours,s=n.minutes+60*n.hours;return r===s?0:r>s?1:-1},dr=function(e,t){var i=ur(e),n=ur(t),r={hours:i.hours,minutes:i.minutes};return r.minutes+=n.minutes,r.hours+=n.hours,r.hours+=Math.floor(r.minutes/60),r.minutes=r.minutes%60,function(e){return(e.hours<10?"0"+e.hours:e.hours)+":"+(e.minutes<10?"0"+e.minutes:e.minutes)}(r)},hr=r({components:{ElScrollbar:L.a},watch:{value:function(e){var t=this;e&&this.$nextTick((function(){return t.scrollToOption()}))}},methods:{handleClick:function(e){e.disabled||this.$emit("pick",e.value)},handleClear:function(){this.$emit("pick",null)},scrollToOption:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:".selected",t=this.$refs.popper.querySelector(".el-picker-panel__content");Vt()(t,t.querySelector(e))},handleMenuEnter:function(){var e=this,t=-1!==this.items.map((function(e){return e.value})).indexOf(this.value),i=-1!==this.items.map((function(e){return e.value})).indexOf(this.defaultValue),n=(t?".selected":i&&".default")||".time-select-item:not(.disabled)";this.$nextTick((function(){return e.scrollToOption(n)}))},scrollDown:function(e){for(var t=this.items,i=t.length,n=t.length,r=t.map((function(e){return e.value})).indexOf(this.value);n--;)if(!t[r=(r+e+i)%i].disabled)return void this.$emit("pick",t[r].value,!0)},isValidValue:function(e){return-1!==this.items.filter((function(e){return!e.disabled})).map((function(e){return e.value})).indexOf(e)},handleKeydown:function(e){var t=e.keyCode;if(38===t||40===t){var i={40:1,38:-1}[t.toString()];return this.scrollDown(i),void e.stopPropagation()}}},data:function(){return{popperClass:"",start:"09:00",end:"18:00",step:"00:30",value:"",defaultValue:"",visible:!1,minTime:"",maxTime:"",width:0}},computed:{items:function(){var e=this.start,t=this.end,i=this.step,n=[];if(e&&t&&i)for(var r=e;cr(r,t)<=0;)n.push({value:r,disabled:cr(r,this.minTime||"-1:-1")<=0||cr(r,this.maxTime||"100:100")>=0}),r=dr(r,i);return n}}},lr,[],!1,null,null,null);hr.options.__file="packages/date-picker/src/panel/time-select.vue";var pr=hr.exports,fr={mixins:[En],name:"ElTimeSelect",componentName:"ElTimeSelect",props:{type:{type:String,default:"time-select"}},beforeCreate:function(){this.panel=pr},install:function(e){e.component(fr.name,fr)}},mr=fr,vr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-range-picker el-picker-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-range-picker__content"},[i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.startTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"minSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.minDate},on:{change:e.handleMinChange,"select-range":e.setMinSelectionRange}})],1)]),i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.endTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"maxSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.maxDate},on:{change:e.handleMaxChange,"select-range":e.setMaxSelectionRange}})],1)])]),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:function(t){e.handleCancel()}}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn confirm",attrs:{type:"button",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};vr._withStripped=!0;var gr=Object(hn.parseDate)("00:00:00","HH:mm:ss"),_r=Object(hn.parseDate)("23:59:59","HH:mm:ss"),br=function(e){return Object(hn.modifyDate)(_r,e.getFullYear(),e.getMonth(),e.getDate())},yr=function(e,t){return new Date(Math.min(e.getTime()+t,br(e).getTime()))},xr=r({mixins:[f.a],components:{TimeSpinner:Mn},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},offset:function(){return this.showSeconds?11:8},spinner:function(){return this.selectionRange[0]this.maxDate.getTime()},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},data:function(){return{popperClass:"",minDate:new Date,maxDate:new Date,value:[],oldValue:[new Date,new Date],defaultValue:null,format:"HH:mm:ss",visible:!1,selectionRange:[0,2],arrowControl:!1}},watch:{value:function(e){Array.isArray(e)?(this.minDate=new Date(e[0]),this.maxDate=new Date(e[1])):Array.isArray(this.defaultValue)?(this.minDate=new Date(this.defaultValue[0]),this.maxDate=new Date(this.defaultValue[1])):this.defaultValue?(this.minDate=new Date(this.defaultValue),this.maxDate=yr(new Date(this.defaultValue),36e5)):(this.minDate=new Date,this.maxDate=yr(new Date,36e5))},visible:function(e){var t=this;e&&(this.oldValue=this.value,this.$nextTick((function(){return t.$refs.minSpinner.emitSelectRange("hours")})))}},methods:{handleClear:function(){this.$emit("pick",null)},handleCancel:function(){this.$emit("pick",this.oldValue)},handleMinChange:function(e){this.minDate=Object(hn.clearMilliseconds)(e),this.handleChange()},handleMaxChange:function(e){this.maxDate=Object(hn.clearMilliseconds)(e),this.handleChange()},handleChange:function(){var e;this.isValidValue([this.minDate,this.maxDate])&&(this.$refs.minSpinner.selectableRange=[[(e=this.minDate,Object(hn.modifyDate)(gr,e.getFullYear(),e.getMonth(),e.getDate())),this.maxDate]],this.$refs.maxSpinner.selectableRange=[[this.minDate,br(this.maxDate)]],this.$emit("pick",[this.minDate,this.maxDate],!0))},setMinSelectionRange:function(e,t){this.$emit("select-range",e,t,"min"),this.selectionRange=[e,t]},setMaxSelectionRange:function(e,t){this.$emit("select-range",e,t,"max"),this.selectionRange=[e+this.offset,t+this.offset]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$refs.minSpinner.selectableRange,i=this.$refs.maxSpinner.selectableRange;this.minDate=Object(hn.limitTimeRange)(this.minDate,t,this.format),this.maxDate=Object(hn.limitTimeRange)(this.maxDate,i,this.format),this.$emit("pick",[this.minDate,this.maxDate],e)},adjustSpinners:function(){this.$refs.minSpinner.adjustSpinners(),this.$refs.maxSpinner.adjustSpinners()},changeSelectionRange:function(e){var t=this.showSeconds?[0,3,6,11,14,17]:[0,3,8,11],i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length,r=t.length/2;n-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(m.generateId)()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),t&&(Object(fe.addClass)(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),i.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(fe.on)(t,"focusin",(function(){e.handleFocus();var i=t.__vue__;i&&"function"==typeof i.focus&&i.focus()})),Object(fe.on)(i,"focusin",this.handleFocus),Object(fe.on)(t,"focusout",this.handleBlur),Object(fe.on)(i,"focusout",this.handleBlur)),Object(fe.on)(t,"keydown",this.handleKeydown),Object(fe.on)(t,"click",this.handleClick)),"click"===this.trigger?(Object(fe.on)(t,"click",this.doToggle),Object(fe.on)(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(fe.on)(t,"mouseenter",this.handleMouseEnter),Object(fe.on)(i,"mouseenter",this.handleMouseEnter),Object(fe.on)(t,"mouseleave",this.handleMouseLeave),Object(fe.on)(i,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(fe.on)(t,"focusin",this.doShow),Object(fe.on)(t,"focusout",this.doClose)):(Object(fe.on)(t,"mousedown",this.doShow),Object(fe.on)(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(fe.addClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(fe.removeClass)(this.referenceElm,"focusing")},handleBlur:function(){Object(fe.removeClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout((function(){e.showPopper=!0}),this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout((function(){e.showPopper=!1}),this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&i&&!i.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(fe.off)(e,"click",this.doToggle),Object(fe.off)(e,"mouseup",this.doClose),Object(fe.off)(e,"mousedown",this.doShow),Object(fe.off)(e,"focusin",this.doShow),Object(fe.off)(e,"focusout",this.doClose),Object(fe.off)(e,"mousedown",this.doShow),Object(fe.off)(e,"mouseup",this.doClose),Object(fe.off)(e,"mouseleave",this.handleMouseLeave),Object(fe.off)(e,"mouseenter",this.handleMouseEnter),Object(fe.off)(document,"click",this.handleDocumentClick)}},Sr,[],!1,null,null,null);Or.options.__file="packages/popover/src/main.vue";var Dr=Or.exports,Er=function(e,t,i){var n=t.expression?t.value:t.arg,r=i.context.$refs[n];r&&(Array.isArray(r)?r[0].$refs.reference=e:r.$refs.reference=e)},Tr={bind:function(e,t,i){Er(e,t,i)},inserted:function(e,t,i){Er(e,t,i)}};di.a.directive("popover",Tr),Dr.install=function(e){e.directive("popover",Tr),e.component(Dr.name,Dr)},Dr.directive=Tr;var $r=Dr,Pr={name:"ElTooltip",mixins:[A.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+Object(m.generateId)(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new di.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=$()(200,(function(){return e.handleClosePopper()})))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var i=this.getFirstElement();if(!i)return null;var n=i.data=i.data||{};return n.staticClass=this.addTooltipClass(n.staticClass),i},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),Object(fe.on)(this.referenceElm,"mouseenter",this.show),Object(fe.on)(this.referenceElm,"mouseleave",this.hide),Object(fe.on)(this.referenceElm,"focus",(function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()})),Object(fe.on)(this.referenceElm,"blur",this.handleBlur),Object(fe.on)(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick((function(){e.value&&e.updatePopper()}))},watch:{focusing:function(e){e?Object(fe.addClass)(this.referenceElm,"focusing"):Object(fe.removeClass)(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout((function(){e.showPopper=!0}),this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout((function(){e.showPopper=!1}),this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;i0){var t=(Ur=Yr.shift()).options;for(var i in t)t.hasOwnProperty(i)&&(Gr[i]=t[i]);void 0===t.callback&&(Gr.callback=Kr);var n=Gr.callback;Gr.callback=function(t,i){n(t,i),e()},Object(Br.isVNode)(Gr.message)?(Gr.$slots.default=[Gr.message],Gr.message=null):delete Gr.$slots.default,["modal","showClose","closeOnClickModal","closeOnPressEscape","closeOnHashChange"].forEach((function(e){void 0===Gr[e]&&(Gr[e]=!0)})),document.body.appendChild(Gr.$el),di.a.nextTick((function(){Gr.visible=!0}))}},Zr=function e(t,i){if(!di.a.prototype.$isServer){if("string"==typeof t||Object(Br.isVNode)(t)?(t={message:t},"string"==typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!i&&(i=t.callback),"undefined"!=typeof Promise)return new Promise((function(n,r){Yr.push({options:Be()({},Wr,e.defaults,t),callback:i,resolve:n,reject:r}),Xr()}));Yr.push({options:Be()({},Wr,e.defaults,t),callback:i}),Xr()}};Zr.setDefaults=function(e){Zr.defaults=e},Zr.alert=function(e,t,i){return"object"===(void 0===t?"undefined":Hr(t))?(i=t,t=""):void 0===t&&(t=""),Zr(Be()({title:t,message:e,$type:"alert",closeOnPressEscape:!1,closeOnClickModal:!1},i))},Zr.confirm=function(e,t,i){return"object"===(void 0===t?"undefined":Hr(t))?(i=t,t=""):void 0===t&&(t=""),Zr(Be()({title:t,message:e,$type:"confirm",showCancelButton:!0},i))},Zr.prompt=function(e,t,i){return"object"===(void 0===t?"undefined":Hr(t))?(i=t,t=""):void 0===t&&(t=""),Zr(Be()({title:t,message:e,showCancelButton:!0,showInput:!0,$type:"prompt"},i))},Zr.close=function(){Gr.doClose(),Gr.visible=!1,Yr=[],Ur=null};var Qr=Zr,Jr=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-breadcrumb",attrs:{"aria-label":"Breadcrumb",role:"navigation"}},[this._t("default")],2)};Jr._withStripped=!0;var es=r({name:"ElBreadcrumb",props:{separator:{type:String,default:"/"},separatorClass:{type:String,default:""}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(".el-breadcrumb__item");e.length&&e[e.length-1].setAttribute("aria-current","page")}},Jr,[],!1,null,null,null);es.options.__file="packages/breadcrumb/src/breadcrumb.vue";var ts=es.exports;ts.install=function(e){e.component(ts.name,ts)};var is=ts,ns=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-breadcrumb__item"},[t("span",{ref:"link",class:["el-breadcrumb__inner",this.to?"is-link":""],attrs:{role:"link"}},[this._t("default")],2),this.separatorClass?t("i",{staticClass:"el-breadcrumb__separator",class:this.separatorClass}):t("span",{staticClass:"el-breadcrumb__separator",attrs:{role:"presentation"}},[this._v(this._s(this.separator))])])};ns._withStripped=!0;var rs=r({name:"ElBreadcrumbItem",props:{to:{},replace:Boolean},data:function(){return{separator:"",separatorClass:""}},inject:["elBreadcrumb"],mounted:function(){var e=this;this.separator=this.elBreadcrumb.separator,this.separatorClass=this.elBreadcrumb.separatorClass;var t=this.$refs.link;t.setAttribute("role","link"),t.addEventListener("click",(function(t){var i=e.to,n=e.$router;i&&n&&(e.replace?n.replace(i):n.push(i))}))}},ns,[],!1,null,null,null);rs.options.__file="packages/breadcrumb/src/breadcrumb-item.vue";var ss=rs.exports;ss.install=function(e){e.component(ss.name,ss)};var as=ss,os=function(){var e=this.$createElement;return(this._self._c||e)("form",{staticClass:"el-form",class:[this.labelPosition?"el-form--label-"+this.labelPosition:"",{"el-form--inline":this.inline}]},[this._t("default")],2)};os._withStripped=!0;var ls=r({name:"ElForm",componentName:"ElForm",provide:function(){return{elForm:this}},props:{model:Object,rules:Object,labelPosition:String,labelWidth:String,labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:String,disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1}},watch:{rules:function(){this.fields.forEach((function(e){e.removeValidateEvents(),e.addValidateEvents()})),this.validateOnRuleChange&&this.validate((function(){}))}},computed:{autoLabelWidth:function(){if(!this.potentialLabelWidthArr.length)return 0;var e=Math.max.apply(Math,this.potentialLabelWidthArr);return e?e+"px":""}},data:function(){return{fields:[],potentialLabelWidthArr:[]}},created:function(){var e=this;this.$on("el.form.addField",(function(t){t&&e.fields.push(t)})),this.$on("el.form.removeField",(function(t){t.prop&&e.fields.splice(e.fields.indexOf(t),1)}))},methods:{resetFields:function(){this.model?this.fields.forEach((function(e){e.resetField()})):console.warn("[Element Warn][Form]model is required for resetFields to work.")},clearValidate:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.length?"string"==typeof e?this.fields.filter((function(t){return e===t.prop})):this.fields.filter((function(t){return e.indexOf(t.prop)>-1})):this.fields;t.forEach((function(e){e.clearValidate()}))},validate:function(e){var t=this;if(this.model){var i=void 0;"function"!=typeof e&&window.Promise&&(i=new window.Promise((function(t,i){e=function(e){e?t(e):i(e)}})));var n=!0,r=0;0===this.fields.length&&e&&e(!0);var s={};return this.fields.forEach((function(i){i.validate("",(function(i,a){i&&(n=!1),s=Be()({},s,a),"function"==typeof e&&++r===t.fields.length&&e(n,s)}))})),i||void 0}console.warn("[Element Warn][Form]model is required for validate to work!")},validateField:function(e,t){e=[].concat(e);var i=this.fields.filter((function(t){return-1!==e.indexOf(t.prop)}));i.length?i.forEach((function(e){e.validate("",t)})):console.warn("[Element Warn]please pass correct props!")},getLabelWidthIndex:function(e){var t=this.potentialLabelWidthArr.indexOf(e);if(-1===t)throw new Error("[ElementForm]unpected width ",e);return t},registerLabelWidth:function(e,t){if(e&&t){var i=this.getLabelWidthIndex(t);this.potentialLabelWidthArr.splice(i,1,e)}else e&&this.potentialLabelWidthArr.push(e)},deregisterLabelWidth:function(e){var t=this.getLabelWidthIndex(e);this.potentialLabelWidthArr.splice(t,1)}}},os,[],!1,null,null,null);ls.options.__file="packages/form/src/form.vue";var us=ls.exports;us.install=function(e){e.component(us.name,us)};var cs=us,ds=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-form-item",class:[{"el-form-item--feedback":e.elForm&&e.elForm.statusIcon,"is-error":"error"===e.validateState,"is-validating":"validating"===e.validateState,"is-success":"success"===e.validateState,"is-required":e.isRequired||e.required,"is-no-asterisk":e.elForm&&e.elForm.hideRequiredAsterisk},e.sizeClass?"el-form-item--"+e.sizeClass:""]},[i("label-wrap",{attrs:{"is-auto-width":e.labelStyle&&"auto"===e.labelStyle.width,"update-all":"auto"===e.form.labelWidth}},[e.label||e.$slots.label?i("label",{staticClass:"el-form-item__label",style:e.labelStyle,attrs:{for:e.labelFor}},[e._t("label",[e._v(e._s(e.label+e.form.labelSuffix))])],2):e._e()]),i("div",{staticClass:"el-form-item__content",style:e.contentStyle},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-top"}},["error"===e.validateState&&e.showMessage&&e.form.showMessage?e._t("error",[i("div",{staticClass:"el-form-item__error",class:{"el-form-item__error--inline":"boolean"==typeof e.inlineMessage?e.inlineMessage:e.elForm&&e.elForm.inlineMessage||!1}},[e._v("\n "+e._s(e.validateMessage)+"\n ")])],{error:e.validateMessage}):e._e()],2)],2)],1)};ds._withStripped=!0;var hs=i(40),ps=i.n(hs),fs=r({props:{isAutoWidth:Boolean,updateAll:Boolean},inject:["elForm","elFormItem"],render:function(){var e=arguments[0],t=this.$slots.default;if(!t)return null;if(this.isAutoWidth){var i=this.elForm.autoLabelWidth,n={};if(i&&"auto"!==i){var r=parseInt(i,10)-this.computedWidth;r&&(n.marginLeft=r+"px")}return e("div",{class:"el-form-item__label-wrap",style:n},[t])}return t[0]},methods:{getLabelWidth:function(){if(this.$el&&this.$el.firstElementChild){var e=window.getComputedStyle(this.$el.firstElementChild).width;return Math.ceil(parseFloat(e))}return 0},updateLabelWidth:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"update";this.$slots.default&&this.isAutoWidth&&this.$el.firstElementChild&&("update"===e?this.computedWidth=this.getLabelWidth():"remove"===e&&this.elForm.deregisterLabelWidth(this.computedWidth))}},watch:{computedWidth:function(e,t){this.updateAll&&(this.elForm.registerLabelWidth(e,t),this.elFormItem.updateComputedLabelWidth(e))}},data:function(){return{computedWidth:0}},mounted:function(){this.updateLabelWidth("update")},updated:function(){this.updateLabelWidth("update")},beforeDestroy:function(){this.updateLabelWidth("remove")}},void 0,void 0,!1,null,null,null);fs.options.__file="packages/form/src/label-wrap.vue";var ms=fs.exports,vs=r({name:"ElFormItem",componentName:"ElFormItem",mixins:[C.a],provide:function(){return{elFormItem:this}},inject:["elForm"],props:{label:String,labelWidth:String,prop:String,required:{type:Boolean,default:void 0},rules:[Object,Array],error:String,validateStatus:String,for:String,inlineMessage:{type:[String,Boolean],default:""},showMessage:{type:Boolean,default:!0},size:String},components:{LabelWrap:ms},watch:{error:{immediate:!0,handler:function(e){this.validateMessage=e,this.validateState=e?"error":""}},validateStatus:function(e){this.validateState=e}},computed:{labelFor:function(){return this.for||this.prop},labelStyle:function(){var e={};if("top"===this.form.labelPosition)return e;var t=this.labelWidth||this.form.labelWidth;return t&&(e.width=t),e},contentStyle:function(){var e={},t=this.label;if("top"===this.form.labelPosition||this.form.inline)return e;if(!t&&!this.labelWidth&&this.isNested)return e;var i=this.labelWidth||this.form.labelWidth;return"auto"===i?"auto"===this.labelWidth?e.marginLeft=this.computedLabelWidth:"auto"===this.form.labelWidth&&(e.marginLeft=this.elForm.autoLabelWidth):e.marginLeft=i,e},form:function(){for(var e=this.$parent,t=e.$options.componentName;"ElForm"!==t;)"ElFormItem"===t&&(this.isNested=!0),t=(e=e.$parent).$options.componentName;return e},fieldValue:function(){var e=this.form.model;if(e&&this.prop){var t=this.prop;return-1!==t.indexOf(":")&&(t=t.replace(/:/,".")),Object(m.getPropByPath)(e,t,!0).v}},isRequired:function(){var e=this.getRules(),t=!1;return e&&e.length&&e.every((function(e){return!e.required||(t=!0,!1)})),t},_formSize:function(){return this.elForm.size},elFormItemSize:function(){return this.size||this._formSize},sizeClass:function(){return this.elFormItemSize||(this.$ELEMENT||{}).size}},data:function(){return{validateState:"",validateMessage:"",validateDisabled:!1,validator:{},isNested:!1,computedLabelWidth:""}},methods:{validate:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:m.noop;this.validateDisabled=!1;var n=this.getFilteredRule(e);if((!n||0===n.length)&&void 0===this.required)return i(),!0;this.validateState="validating";var r={};n&&n.length>0&&n.forEach((function(e){delete e.trigger})),r[this.prop]=n;var s=new ps.a(r),a={};a[this.prop]=this.fieldValue,s.validate(a,{firstFields:!0},(function(e,n){t.validateState=e?"error":"success",t.validateMessage=e?e[0].message:"",i(t.validateMessage,n),t.elForm&&t.elForm.$emit("validate",t.prop,!e,t.validateMessage||null)}))},clearValidate:function(){this.validateState="",this.validateMessage="",this.validateDisabled=!1},resetField:function(){var e=this;this.validateState="",this.validateMessage="";var t=this.form.model,i=this.fieldValue,n=this.prop;-1!==n.indexOf(":")&&(n=n.replace(/:/,"."));var r=Object(m.getPropByPath)(t,n,!0);this.validateDisabled=!0,Array.isArray(i)?r.o[r.k]=[].concat(this.initialValue):r.o[r.k]=this.initialValue,this.$nextTick((function(){e.validateDisabled=!1})),this.broadcast("ElTimeSelect","fieldReset",this.initialValue)},getRules:function(){var e=this.form.rules,t=this.rules,i=void 0!==this.required?{required:!!this.required}:[],n=Object(m.getPropByPath)(e,this.prop||"");return e=e?n.o[this.prop||""]||n.v:[],[].concat(t||e||[]).concat(i)},getFilteredRule:function(e){return this.getRules().filter((function(t){return!t.trigger||""===e||(Array.isArray(t.trigger)?t.trigger.indexOf(e)>-1:t.trigger===e)})).map((function(e){return Be()({},e)}))},onFieldBlur:function(){this.validate("blur")},onFieldChange:function(){this.validateDisabled?this.validateDisabled=!1:this.validate("change")},updateComputedLabelWidth:function(e){this.computedLabelWidth=e?e+"px":""},addValidateEvents:function(){(this.getRules().length||void 0!==this.required)&&(this.$on("el.form.blur",this.onFieldBlur),this.$on("el.form.change",this.onFieldChange))},removeValidateEvents:function(){this.$off()}},mounted:function(){if(this.prop){this.dispatch("ElForm","el.form.addField",[this]);var e=this.fieldValue;Array.isArray(e)&&(e=[].concat(e)),Object.defineProperty(this,"initialValue",{value:e}),this.addValidateEvents()}},beforeDestroy:function(){this.dispatch("ElForm","el.form.removeField",[this])}},ds,[],!1,null,null,null);vs.options.__file="packages/form/src/form-item.vue";var gs=vs.exports;gs.install=function(e){e.component(gs.name,gs)};var _s=gs,bs=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-tabs__active-bar",class:"is-"+this.rootTabs.tabPosition,style:this.barStyle})};bs._withStripped=!0;var ys=r({name:"TabBar",props:{tabs:Array},inject:["rootTabs"],computed:{barStyle:{get:function(){var e=this,t={},i=0,n=0,r=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height",s="width"===r?"x":"y",a=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,(function(e){return e.toUpperCase()}))};this.tabs.every((function(t,s){var o=Object(m.arrayFind)(e.$parent.$refs.tabs||[],(function(e){return e.id.replace("tab-","")===t.paneName}));if(!o)return!1;if(t.active){n=o["client"+a(r)];var l=window.getComputedStyle(o);return"width"===r&&e.tabs.length>1&&(n-=parseFloat(l.paddingLeft)+parseFloat(l.paddingRight)),"width"===r&&(i+=parseFloat(l.paddingLeft)),!1}return i+=o["client"+a(r)],!0}));var o="translate"+a(s)+"("+i+"px)";return t[r]=n+"px",t.transform=o,t.msTransform=o,t.webkitTransform=o,t}}}},bs,[],!1,null,null,null);ys.options.__file="packages/tabs/src/tab-bar.vue";var xs=ys.exports;function ks(){}var ws=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,(function(e){return e.toUpperCase()}))},Cs=r({name:"TabNav",components:{TabBar:xs},inject:["rootTabs"],props:{panes:Array,currentName:String,editable:Boolean,onTabClick:{type:Function,default:ks},onTabRemove:{type:Function,default:ks},type:String,stretch:Boolean},data:function(){return{scrollable:!1,navOffset:0,isFocus:!1,focusable:!0}},computed:{navStyle:function(){return{transform:"translate"+(-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"X":"Y")+"(-"+this.navOffset+"px)"}},sizeName:function(){return-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height"}},methods:{scrollPrev:function(){var e=this.$refs.navScroll["offset"+ws(this.sizeName)],t=this.navOffset;if(t){var i=t>e?t-e:0;this.navOffset=i}},scrollNext:function(){var e=this.$refs.nav["offset"+ws(this.sizeName)],t=this.$refs.navScroll["offset"+ws(this.sizeName)],i=this.navOffset;if(!(e-i<=t)){var n=e-i>2*t?i+t:e-t;this.navOffset=n}},scrollToActiveTab:function(){if(this.scrollable){var e=this.$refs.nav,t=this.$el.querySelector(".is-active");if(t){var i=this.$refs.navScroll,n=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition),r=t.getBoundingClientRect(),s=i.getBoundingClientRect(),a=n?e.offsetWidth-s.width:e.offsetHeight-s.height,o=this.navOffset,l=o;n?(r.lefts.right&&(l=o+r.right-s.right)):(r.tops.bottom&&(l=o+(r.bottom-s.bottom))),l=Math.max(l,0),this.navOffset=Math.min(l,a)}}},update:function(){if(this.$refs.nav){var e=this.sizeName,t=this.$refs.nav["offset"+ws(e)],i=this.$refs.navScroll["offset"+ws(e)],n=this.navOffset;if(i0&&(this.navOffset=0)}},changeTab:function(e){var t=e.keyCode,i=void 0,n=void 0,r=void 0;-1!==[37,38,39,40].indexOf(t)&&(r=e.currentTarget.querySelectorAll("[role=tab]"),n=Array.prototype.indexOf.call(r,e.target),r[i=37===t||38===t?0===n?r.length-1:n-1:n0&&void 0!==arguments[0]&&arguments[0];if(this.$slots.default){var i=this.$slots.default.filter((function(e){return e.tag&&e.componentOptions&&"ElTabPane"===e.componentOptions.Ctor.options.name})),n=i.map((function(e){return e.componentInstance})),r=!(n.length===this.panes.length&&n.every((function(t,i){return t===e.panes[i]})));(t||r)&&(this.panes=n)}else 0!==this.panes.length&&(this.panes=[])},handleTabClick:function(e,t,i){e.disabled||(this.setCurrentName(t),this.$emit("tab-click",e,i))},handleTabRemove:function(e,t){e.disabled||(t.stopPropagation(),this.$emit("edit",e.name,"remove"),this.$emit("tab-remove",e.name))},handleTabAdd:function(){this.$emit("edit",null,"add"),this.$emit("tab-add")},setCurrentName:function(e){var t=this,i=function(){t.currentName=e,t.$emit("input",e)};if(this.currentName!==e&&this.beforeLeave){var n=this.beforeLeave(e,this.currentName);n&&n.then?n.then((function(){i(),t.$refs.nav&&t.$refs.nav.removeFocus()}),(function(){})):!1!==n&&i()}else i()}},render:function(e){var t,i=this.type,n=this.handleTabClick,r=this.handleTabRemove,s=this.handleTabAdd,a=this.currentName,o=this.panes,l=this.editable,u=this.addable,c=this.tabPosition,d=this.stretch,h=l||u?e("span",{class:"el-tabs__new-tab",on:{click:s,keydown:function(e){13===e.keyCode&&s()}},attrs:{tabindex:"0"}},[e("i",{class:"el-icon-plus"})]):null,p=e("div",{class:["el-tabs__header","is-"+c]},[h,e("tab-nav",{props:{currentName:a,onTabClick:n,onTabRemove:r,editable:l,type:i,panes:o,stretch:d},ref:"nav"})]),f=e("div",{class:"el-tabs__content"},[this.$slots.default]);return e("div",{class:(t={"el-tabs":!0,"el-tabs--card":"card"===i},t["el-tabs--"+c]=!0,t["el-tabs--border-card"]="border-card"===i,t)},["bottom"!==c?[p,f]:[f,p]])},created:function(){this.currentName||this.setCurrentName("0"),this.$on("tab-nav-update",this.calcPaneInstances.bind(null,!0))},mounted:function(){this.calcPaneInstances()},updated:function(){this.calcPaneInstances()}},void 0,void 0,!1,null,null,null);Ss.options.__file="packages/tabs/src/tabs.vue";var Os=Ss.exports;Os.install=function(e){e.component(Os.name,Os)};var Ds=Os,Es=function(){var e=this,t=e.$createElement,i=e._self._c||t;return!e.lazy||e.loaded||e.active?i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],staticClass:"el-tab-pane",attrs:{role:"tabpanel","aria-hidden":!e.active,id:"pane-"+e.paneName,"aria-labelledby":"tab-"+e.paneName}},[e._t("default")],2):e._e()};Es._withStripped=!0;var Ts=r({name:"ElTabPane",componentName:"ElTabPane",props:{label:String,labelContent:Function,name:String,closable:Boolean,disabled:Boolean,lazy:Boolean},data:function(){return{index:null,loaded:!1}},computed:{isClosable:function(){return this.closable||this.$parent.closable},active:function(){var e=this.$parent.currentName===(this.name||this.index);return e&&(this.loaded=!0),e},paneName:function(){return this.name||this.index}},updated:function(){this.$parent.$emit("tab-nav-update")}},Es,[],!1,null,null,null);Ts.options.__file="packages/tabs/src/tab-pane.vue";var $s=Ts.exports;$s.install=function(e){e.component($s.name,$s)};var Ps=$s,js=r({name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return-1!==["dark","light","plain"].indexOf(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,i=this.tagSize,n=this.hit,r=this.effect,s=e("span",{class:["el-tag",t?"el-tag--"+t:"",i?"el-tag--"+i:"",r?"el-tag--"+r:"",n&&"is-hit"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?s:e("transition",{attrs:{name:"el-zoom-in-center"}},[s])}},void 0,void 0,!1,null,null,null);js.options.__file="packages/tag/src/tag.vue";var Ms=js.exports;Ms.install=function(e){e.component(Ms.name,Ms)};var Is=Ms,As=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-tree",class:{"el-tree--highlight-current":e.highlightCurrent,"is-dragging":!!e.dragState.draggingNode,"is-drop-not-allow":!e.dragState.allowDrop,"is-drop-inner":"inner"===e.dragState.dropType},attrs:{role:"tree"}},[e._l(e.root.childNodes,(function(t){return i("el-tree-node",{key:e.getNodeKey(t),attrs:{node:t,props:e.props,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent},on:{"node-expand":e.handleNodeExpand}})})),e.isEmpty?i("div",{staticClass:"el-tree__empty-block"},[i("span",{staticClass:"el-tree__empty-text"},[e._v(e._s(e.emptyText))])]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.dragState.showDropIndicator,expression:"dragState.showDropIndicator"}],ref:"dropIndicator",staticClass:"el-tree__drop-indicator"})],2)};As._withStripped=!0;var Ns="$treeNodeId",Ls=function(e,t){t&&!t[Ns]&&Object.defineProperty(t,Ns,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},Fs=function(e,t){return e?t[e]:t[Ns]},Vs=function(){function e(e,t){for(var i=0;i0&&n.lazy&&n.defaultExpandAll&&this.expand(),Array.isArray(this.data)||Ls(this,this.data),this.data){var a=n.defaultExpandedKeys,o=n.key;o&&a&&-1!==a.indexOf(this.key)&&this.expand(null,n.autoExpandParent),o&&void 0!==n.currentNodeKey&&this.key===n.currentNodeKey&&(n.currentNode=this,n.currentNode.isCurrent=!0),n.lazy&&n._initDefaultCheckedNode(this),this.updateLeafState()}}return e.prototype.setData=function(e){Array.isArray(e)||Ls(this,e),this.data=e,this.childNodes=[];for(var t=void 0,i=0,n=(t=0===this.level&&this.data instanceof Array?this.data:Bs(this,"children")||[]).length;i1&&void 0!==arguments[1])||arguments[1],i=function i(n){for(var r=n.childNodes||[],s=!1,a=0,o=r.length;a-1&&t.splice(i,1);var n=this.childNodes.indexOf(e);n>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(n,1)),this.updateLeafState()},e.prototype.removeChildByData=function(e){for(var t=null,i=0;i0;)n.expanded=!0,n=n.parent;i.expanded=!0,e&&e()};this.shouldLoadData()?this.loadData((function(e){e instanceof Array&&(i.checked?i.setChecked(!0,!0):i.store.checkStrictly||Rs(i),n())})):n()},e.prototype.doCreateChildren=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.forEach((function(e){t.insertChild(Be()({data:e},i),void 0,!0)}))},e.prototype.collapse=function(){this.expanded=!1},e.prototype.shouldLoadData=function(){return!0===this.store.lazy&&this.store.load&&!this.loaded},e.prototype.updateLeafState=function(){if(!0!==this.store.lazy||!0===this.loaded||void 0===this.isLeafByUser){var e=this.childNodes;!this.store.lazy||!0===this.store.lazy&&!0===this.loaded?this.isLeaf=!e||0===e.length:this.isLeaf=!1}else this.isLeaf=this.isLeafByUser},e.prototype.setChecked=function(e,t,i,n){var r=this;if(this.indeterminate="half"===e,this.checked=!0===e,!this.store.checkStrictly){if(!this.shouldLoadData()||this.store.checkDescendants){var s=zs(this.childNodes),a=s.all,o=s.allWithoutDisable;this.isLeaf||a||!o||(this.checked=!1,e=!1);var l=function(){if(t){for(var i=r.childNodes,s=0,a=i.length;s0&&void 0!==arguments[0]&&arguments[0];if(0===this.level)return this.data;var t=this.data;if(!t)return null;var i=this.store.props,n="children";return i&&(n=i.children||"children"),void 0===t[n]&&(t[n]=null),e&&!t[n]&&(t[n]=[]),t[n]},e.prototype.updateChildren=function(){var e=this,t=this.getChildren()||[],i=this.childNodes.map((function(e){return e.data})),n={},r=[];t.forEach((function(e,t){var s=e[Ns];!!s&&Object(m.arrayFindIndex)(i,(function(e){return e[Ns]===s}))>=0?n[s]={index:t,data:e}:r.push({index:t,data:e})})),this.store.lazy||i.forEach((function(t){n[t[Ns]]||e.removeChildByData(t)})),r.forEach((function(t){var i=t.index,n=t.data;e.insertChild({data:n},i)})),this.updateLeafState()},e.prototype.loadData=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(i).length)e&&e.call(this);else{this.loading=!0;var n=function(n){t.loaded=!0,t.loading=!1,t.childNodes=[],t.doCreateChildren(n,i),t.updateLeafState(),e&&e.call(t,n)};this.store.load(this,n)}},Vs(e,[{key:"label",get:function(){return Bs(this,"label")}},{key:"key",get:function(){var e=this.store.key;return this.data?this.data[e]:null}},{key:"disabled",get:function(){return Bs(this,"disabled")}},{key:"nextSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return e.childNodes[t+1]}return null}},{key:"previousSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return t>0?e.childNodes[t-1]:null}return null}}]),e}(),qs="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var Us=function(){function e(t){var i=this;for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.currentNode=null,this.currentNodeKey=null,t)t.hasOwnProperty(n)&&(this[n]=t[n]);(this.nodesMap={},this.root=new Ws({data:this.data,store:this}),this.lazy&&this.load)?(0,this.load)(this.root,(function(e){i.root.doCreateChildren(e),i._initDefaultCheckedNodes()})):this._initDefaultCheckedNodes()}return e.prototype.filter=function(e){var t=this.filterNodeMethod,i=this.lazy;!function n(r){var s=r.root?r.root.childNodes:r.childNodes;if(s.forEach((function(i){i.visible=t.call(i,e,i.data,i),n(i)})),!r.visible&&s.length){var a;a=!s.some((function(e){return e.visible})),r.root?r.root.visible=!1===a:r.visible=!1===a}e&&(!r.visible||r.isLeaf||i||r.expand())}(this)},e.prototype.setData=function(e){e!==this.root.data?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()},e.prototype.getNode=function(e){if(e instanceof Ws)return e;var t="object"!==(void 0===e?"undefined":qs(e))?e:Fs(this.key,e);return this.nodesMap[t]||null},e.prototype.insertBefore=function(e,t){var i=this.getNode(t);i.parent.insertBefore({data:e},i)},e.prototype.insertAfter=function(e,t){var i=this.getNode(t);i.parent.insertAfter({data:e},i)},e.prototype.remove=function(e){var t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))},e.prototype.append=function(e,t){var i=t?this.getNode(t):this.root;i&&i.insertChild({data:e})},e.prototype._initDefaultCheckedNodes=function(){var e=this,t=this.defaultCheckedKeys||[],i=this.nodesMap;t.forEach((function(t){var n=i[t];n&&n.setChecked(!0,!e.checkStrictly)}))},e.prototype._initDefaultCheckedNode=function(e){-1!==(this.defaultCheckedKeys||[]).indexOf(e.key)&&e.setChecked(!0,!this.checkStrictly)},e.prototype.setDefaultCheckedKey=function(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())},e.prototype.registerNode=function(e){this.key&&e&&e.data&&(void 0!==e.key&&(this.nodesMap[e.key]=e))},e.prototype.deregisterNode=function(e){var t=this;this.key&&e&&e.data&&(e.childNodes.forEach((function(e){t.deregisterNode(e)})),delete this.nodesMap[e.key])},e.prototype.getCheckedNodes=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[],n=function n(r){(r.root?r.root.childNodes:r.childNodes).forEach((function(r){(r.checked||t&&r.indeterminate)&&(!e||e&&r.isLeaf)&&i.push(r.data),n(r)}))};return n(this),i},e.prototype.getCheckedKeys=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getCheckedNodes(t).map((function(t){return(t||{})[e.key]}))},e.prototype.getHalfCheckedNodes=function(){var e=[];return function t(i){(i.root?i.root.childNodes:i.childNodes).forEach((function(i){i.indeterminate&&e.push(i.data),t(i)}))}(this),e},e.prototype.getHalfCheckedKeys=function(){var e=this;return this.getHalfCheckedNodes().map((function(t){return(t||{})[e.key]}))},e.prototype._getAllNodes=function(){var e=[],t=this.nodesMap;for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.prototype.updateChildren=function(e,t){var i=this.nodesMap[e];if(i){for(var n=i.childNodes,r=n.length-1;r>=0;r--){var s=n[r];this.remove(s.data)}for(var a=0,o=t.length;a1&&void 0!==arguments[1]&&arguments[1],i=arguments[2],n=this._getAllNodes().sort((function(e,t){return t.level-e.level})),r=Object.create(null),s=Object.keys(i);n.forEach((function(e){return e.setChecked(!1,!1)}));for(var a=0,o=n.length;a-1;if(c){for(var d=l.parent;d&&d.level>0;)r[d.data[e]]=!0,d=d.parent;l.isLeaf||this.checkStrictly?l.setChecked(!0,!1):(l.setChecked(!0,!0),t&&function(){l.setChecked(!1,!1);!function e(t){t.childNodes.forEach((function(t){t.isLeaf||t.setChecked(!1,!1),e(t)}))}(l)}())}else l.checked&&!r[u]&&l.setChecked(!1,!1)}},e.prototype.setCheckedNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.key,n={};e.forEach((function(e){n[(e||{})[i]]=!0})),this._setCheckedKeys(i,t,n)},e.prototype.setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.defaultCheckedKeys=e;var i=this.key,n={};e.forEach((function(e){n[e]=!0})),this._setCheckedKeys(i,t,n)},e.prototype.setDefaultExpandedKeys=function(e){var t=this;e=e||[],this.defaultExpandedKeys=e,e.forEach((function(e){var i=t.getNode(e);i&&i.expand(null,t.autoExpandParent)}))},e.prototype.setChecked=function(e,t,i){var n=this.getNode(e);n&&n.setChecked(!!t,i)},e.prototype.getCurrentNode=function(){return this.currentNode},e.prototype.setCurrentNode=function(e){var t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0},e.prototype.setUserCurrentNode=function(e){var t=e[this.key],i=this.nodesMap[t];this.setCurrentNode(i)},e.prototype.setCurrentNodeKey=function(e){if(null==e)return this.currentNode&&(this.currentNode.isCurrent=!1),void(this.currentNode=null);var t=this.getNode(e);t&&this.setCurrentNode(t)},e}(),Gs=function(){var e=this,t=this,i=t.$createElement,n=t._self._c||i;return n("div",{directives:[{name:"show",rawName:"v-show",value:t.node.visible,expression:"node.visible"}],ref:"node",staticClass:"el-tree-node",class:{"is-expanded":t.expanded,"is-current":t.node.isCurrent,"is-hidden":!t.node.visible,"is-focusable":!t.node.disabled,"is-checked":!t.node.disabled&&t.node.checked},attrs:{role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.node.disabled,"aria-checked":t.node.checked,draggable:t.tree.draggable},on:{click:function(e){return e.stopPropagation(),t.handleClick(e)},contextmenu:function(t){return e.handleContextMenu(t)},dragstart:function(e){return e.stopPropagation(),t.handleDragStart(e)},dragover:function(e){return e.stopPropagation(),t.handleDragOver(e)},dragend:function(e){return e.stopPropagation(),t.handleDragEnd(e)},drop:function(e){return e.stopPropagation(),t.handleDrop(e)}}},[n("div",{staticClass:"el-tree-node__content",style:{"padding-left":(t.node.level-1)*t.tree.indent+"px"}},[n("span",{class:[{"is-leaf":t.node.isLeaf,expanded:!t.node.isLeaf&&t.expanded},"el-tree-node__expand-icon",t.tree.iconClass?t.tree.iconClass:"el-icon-caret-right"],on:{click:function(e){return e.stopPropagation(),t.handleExpandIconClick(e)}}}),t.showCheckbox?n("el-checkbox",{attrs:{indeterminate:t.node.indeterminate,disabled:!!t.node.disabled},on:{change:t.handleCheckChange},nativeOn:{click:function(e){e.stopPropagation()}},model:{value:t.node.checked,callback:function(e){t.$set(t.node,"checked",e)},expression:"node.checked"}}):t._e(),t.node.loading?n("span",{staticClass:"el-tree-node__loading-icon el-icon-loading"}):t._e(),n("node-content",{attrs:{node:t.node}})],1),n("el-collapse-transition",[!t.renderAfterExpand||t.childNodeRendered?n("div",{directives:[{name:"show",rawName:"v-show",value:t.expanded,expression:"expanded"}],staticClass:"el-tree-node__children",attrs:{role:"group","aria-expanded":t.expanded}},t._l(t.node.childNodes,(function(e){return n("el-tree-node",{key:t.getNodeKey(e),attrs:{"render-content":t.renderContent,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,node:e},on:{"node-expand":t.handleChildNodeExpand}})})),1):t._e()])],1)};Gs._withStripped=!0;var Ys=r({name:"ElTreeNode",componentName:"ElTreeNode",mixins:[C.a],props:{node:{default:function(){return{}}},props:{},renderContent:Function,renderAfterExpand:{type:Boolean,default:!0},showCheckbox:{type:Boolean,default:!1}},components:{ElCollapseTransition:be.a,ElCheckbox:ri.a,NodeContent:{props:{node:{required:!0}},render:function(e){var t=this.$parent,i=t.tree,n=this.node,r=n.data,s=n.store;return t.renderContent?t.renderContent.call(t._renderProxy,e,{_self:i.$vnode.context,node:n,data:r,store:s}):i.$scopedSlots.default?i.$scopedSlots.default({node:n,data:r}):e("span",{class:"el-tree-node__label"},[n.label])}}},data:function(){return{tree:null,expanded:!1,childNodeRendered:!1,oldChecked:null,oldIndeterminate:null}},watch:{"node.indeterminate":function(e){this.handleSelectChange(this.node.checked,e)},"node.checked":function(e){this.handleSelectChange(e,this.node.indeterminate)},"node.expanded":function(e){var t=this;this.$nextTick((function(){return t.expanded=e})),e&&(this.childNodeRendered=!0)}},methods:{getNodeKey:function(e){return Fs(this.tree.nodeKey,e.data)},handleSelectChange:function(e,t){this.oldChecked!==e&&this.oldIndeterminate!==t&&this.tree.$emit("check-change",this.node.data,e,t),this.oldChecked=e,this.indeterminate=t},handleClick:function(){var e=this.tree.store;e.setCurrentNode(this.node),this.tree.$emit("current-change",e.currentNode?e.currentNode.data:null,e.currentNode),this.tree.currentNode=this,this.tree.expandOnClickNode&&this.handleExpandIconClick(),this.tree.checkOnClickNode&&!this.node.disabled&&this.handleCheckChange(null,{target:{checked:!this.node.checked}}),this.tree.$emit("node-click",this.node.data,this.node,this)},handleContextMenu:function(e){this.tree._events["node-contextmenu"]&&this.tree._events["node-contextmenu"].length>0&&(e.stopPropagation(),e.preventDefault()),this.tree.$emit("node-contextmenu",e,this.node.data,this.node,this)},handleExpandIconClick:function(){this.node.isLeaf||(this.expanded?(this.tree.$emit("node-collapse",this.node.data,this.node,this),this.node.collapse()):(this.node.expand(),this.$emit("node-expand",this.node.data,this.node,this)))},handleCheckChange:function(e,t){var i=this;this.node.setChecked(t.target.checked,!this.tree.checkStrictly),this.$nextTick((function(){var e=i.tree.store;i.tree.$emit("check",i.node.data,{checkedNodes:e.getCheckedNodes(),checkedKeys:e.getCheckedKeys(),halfCheckedNodes:e.getHalfCheckedNodes(),halfCheckedKeys:e.getHalfCheckedKeys()})}))},handleChildNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.tree.$emit("node-expand",e,t,i)},handleDragStart:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-start",e,this)},handleDragOver:function(e){this.tree.draggable&&(this.tree.$emit("tree-node-drag-over",e,this),e.preventDefault())},handleDrop:function(e){e.preventDefault()},handleDragEnd:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-end",e,this)}},created:function(){var e=this,t=this.$parent;t.isTree?this.tree=t:this.tree=t.tree;var i=this.tree;i||console.warn("Can not find node's tree.");var n=(i.props||{}).children||"children";this.$watch("node.data."+n,(function(){e.node.updateChildren()})),this.node.expanded&&(this.expanded=!0,this.childNodeRendered=!0),this.tree.accordion&&this.$on("tree-node-expand",(function(t){e.node!==t&&e.node.collapse()}))}},Gs,[],!1,null,null,null);Ys.options.__file="packages/tree/src/tree-node.vue";var Ks=Ys.exports,Xs=r({name:"ElTree",mixins:[C.a],components:{ElTreeNode:Ks},data:function(){return{store:null,root:null,currentNode:null,treeItems:null,checkboxItems:[],dragState:{showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0}}},props:{data:{type:Array},emptyText:{type:String,default:function(){return Object(Ir.t)("el.tree.emptyText")}},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{default:function(){return{children:"children",label:"label",disabled:"disabled"}}},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},iconClass:String},computed:{children:{set:function(e){this.data=e},get:function(){return this.data}},treeItemArray:function(){return Array.prototype.slice.call(this.treeItems)},isEmpty:function(){var e=this.root.childNodes;return!e||0===e.length||e.every((function(e){return!e.visible}))}},watch:{defaultCheckedKeys:function(e){this.store.setDefaultCheckedKey(e)},defaultExpandedKeys:function(e){this.store.defaultExpandedKeys=e,this.store.setDefaultExpandedKeys(e)},data:function(e){this.store.setData(e)},checkboxItems:function(e){Array.prototype.forEach.call(e,(function(e){e.setAttribute("tabindex",-1)}))},checkStrictly:function(e){this.store.checkStrictly=e}},methods:{filter:function(e){if(!this.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");this.store.filter(e)},getNodeKey:function(e){return Fs(this.nodeKey,e.data)},getNodePath:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");var t=this.store.getNode(e);if(!t)return[];for(var i=[t.data],n=t.parent;n&&n!==this.root;)i.push(n.data),n=n.parent;return i.reverse()},getCheckedNodes:function(e,t){return this.store.getCheckedNodes(e,t)},getCheckedKeys:function(e){return this.store.getCheckedKeys(e)},getCurrentNode:function(){var e=this.store.getCurrentNode();return e?e.data:null},getCurrentKey:function(){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");var e=this.getCurrentNode();return e?e[this.nodeKey]:null},setCheckedNodes:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");this.store.setCheckedNodes(e,t)},setCheckedKeys:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");this.store.setCheckedKeys(e,t)},setChecked:function(e,t,i){this.store.setChecked(e,t,i)},getHalfCheckedNodes:function(){return this.store.getHalfCheckedNodes()},getHalfCheckedKeys:function(){return this.store.getHalfCheckedKeys()},setCurrentNode:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");this.store.setUserCurrentNode(e)},setCurrentKey:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");this.store.setCurrentNodeKey(e)},getNode:function(e){return this.store.getNode(e)},remove:function(e){this.store.remove(e)},append:function(e,t){this.store.append(e,t)},insertBefore:function(e,t){this.store.insertBefore(e,t)},insertAfter:function(e,t){this.store.insertAfter(e,t)},handleNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.$emit("node-expand",e,t,i)},updateKeyChildren:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");this.store.updateChildren(e,t)},initTabIndex:function(){this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]");var e=this.$el.querySelectorAll(".is-checked[role=treeitem]");e.length?e[0].setAttribute("tabindex",0):this.treeItems[0]&&this.treeItems[0].setAttribute("tabindex",0)},handleKeydown:function(e){var t=e.target;if(-1!==t.className.indexOf("el-tree-node")){var i=e.keyCode;this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]");var n=this.treeItemArray.indexOf(t),r=void 0;[38,40].indexOf(i)>-1&&(e.preventDefault(),r=38===i?0!==n?n-1:0:n-1&&(e.preventDefault(),t.click());var s=t.querySelector('[type="checkbox"]');[13,32].indexOf(i)>-1&&s&&(e.preventDefault(),s.click())}}},created:function(){var e=this;this.isTree=!0,this.store=new Us({key:this.nodeKey,data:this.data,lazy:this.lazy,props:this.props,load:this.load,currentNodeKey:this.currentNodeKey,checkStrictly:this.checkStrictly,checkDescendants:this.checkDescendants,defaultCheckedKeys:this.defaultCheckedKeys,defaultExpandedKeys:this.defaultExpandedKeys,autoExpandParent:this.autoExpandParent,defaultExpandAll:this.defaultExpandAll,filterNodeMethod:this.filterNodeMethod}),this.root=this.store.root;var t=this.dragState;this.$on("tree-node-drag-start",(function(i,n){if("function"==typeof e.allowDrag&&!e.allowDrag(n.node))return i.preventDefault(),!1;i.dataTransfer.effectAllowed="move";try{i.dataTransfer.setData("text/plain","")}catch(e){}t.draggingNode=n,e.$emit("node-drag-start",n.node,i)})),this.$on("tree-node-drag-over",(function(i,n){var r=function(e,t){for(var i=e;i&&"BODY"!==i.tagName;){if(i.__vue__&&i.__vue__.$options.name===t)return i.__vue__;i=i.parentNode}return null}(i.target,"ElTreeNode"),s=t.dropNode;s&&s!==r&&Object(fe.removeClass)(s.$el,"is-drop-inner");var a=t.draggingNode;if(a&&r){var o=!0,l=!0,u=!0,c=!0;"function"==typeof e.allowDrop&&(o=e.allowDrop(a.node,r.node,"prev"),c=l=e.allowDrop(a.node,r.node,"inner"),u=e.allowDrop(a.node,r.node,"next")),i.dataTransfer.dropEffect=l?"move":"none",(o||l||u)&&s!==r&&(s&&e.$emit("node-drag-leave",a.node,s.node,i),e.$emit("node-drag-enter",a.node,r.node,i)),(o||l||u)&&(t.dropNode=r),r.node.nextSibling===a.node&&(u=!1),r.node.previousSibling===a.node&&(o=!1),r.node.contains(a.node,!1)&&(l=!1),(a.node===r.node||a.node.contains(r.node))&&(o=!1,l=!1,u=!1);var d=r.$el.getBoundingClientRect(),h=e.$el.getBoundingClientRect(),p=void 0,f=o?l?.25:u?.45:1:-1,m=u?l?.75:o?.55:0:1,v=-9999,g=i.clientY-d.top;p=gd.height*m?"after":l?"inner":"none";var _=r.$el.querySelector(".el-tree-node__expand-icon").getBoundingClientRect(),b=e.$refs.dropIndicator;"before"===p?v=_.top-h.top:"after"===p&&(v=_.bottom-h.top),b.style.top=v+"px",b.style.left=_.right-h.left+"px","inner"===p?Object(fe.addClass)(r.$el,"is-drop-inner"):Object(fe.removeClass)(r.$el,"is-drop-inner"),t.showDropIndicator="before"===p||"after"===p,t.allowDrop=t.showDropIndicator||c,t.dropType=p,e.$emit("node-drag-over",a.node,r.node,i)}})),this.$on("tree-node-drag-end",(function(i){var n=t.draggingNode,r=t.dropType,s=t.dropNode;if(i.preventDefault(),i.dataTransfer.dropEffect="move",n&&s){var a={data:n.node.data};"none"!==r&&n.node.remove(),"before"===r?s.node.parent.insertBefore(a,s.node):"after"===r?s.node.parent.insertAfter(a,s.node):"inner"===r&&s.node.insertChild(a),"none"!==r&&e.store.registerNode(a),Object(fe.removeClass)(s.$el,"is-drop-inner"),e.$emit("node-drag-end",n.node,s.node,r,i),"none"!==r&&e.$emit("node-drop",n.node,s.node,r,i)}n&&!s&&e.$emit("node-drag-end",n.node,null,r,i),t.showDropIndicator=!1,t.draggingNode=null,t.dropNode=null,t.allowDrop=!0}))},mounted:function(){this.initTabIndex(),this.$el.addEventListener("keydown",this.handleKeydown)},updated:function(){this.treeItems=this.$el.querySelectorAll("[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]")}},As,[],!1,null,null,null);Xs.options.__file="packages/tree/src/tree.vue";var Zs=Xs.exports;Zs.install=function(e){e.component(Zs.name,Zs)};var Qs=Zs,Js=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-alert-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-alert",class:[e.typeClass,e.center?"is-center":"","is-"+e.effect],attrs:{role:"alert"}},[e.showIcon?i("i",{staticClass:"el-alert__icon",class:[e.iconClass,e.isBigIcon]}):e._e(),i("div",{staticClass:"el-alert__content"},[e.title||e.$slots.title?i("span",{staticClass:"el-alert__title",class:[e.isBoldTitle]},[e._t("title",[e._v(e._s(e.title))])],2):e._e(),e.$slots.default&&!e.description?i("p",{staticClass:"el-alert__description"},[e._t("default")],2):e._e(),e.description&&!e.$slots.default?i("p",{staticClass:"el-alert__description"},[e._v(e._s(e.description))]):e._e(),i("i",{directives:[{name:"show",rawName:"v-show",value:e.closable,expression:"closable"}],staticClass:"el-alert__closebtn",class:{"is-customed":""!==e.closeText,"el-icon-close":""===e.closeText},on:{click:function(t){e.close()}}},[e._v(e._s(e.closeText))])])])])};Js._withStripped=!0;var ea={success:"el-icon-success",warning:"el-icon-warning",error:"el-icon-error"},ta=r({name:"ElAlert",props:{title:{type:String,default:""},description:{type:String,default:""},type:{type:String,default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,default:"light",validator:function(e){return-1!==["light","dark"].indexOf(e)}}},data:function(){return{visible:!0}},methods:{close:function(){this.visible=!1,this.$emit("close")}},computed:{typeClass:function(){return"el-alert--"+this.type},iconClass:function(){return ea[this.type]||"el-icon-info"},isBigIcon:function(){return this.description||this.$slots.default?"is-big":""},isBoldTitle:function(){return this.description||this.$slots.default?"is-bold":""}}},Js,[],!1,null,null,null);ta.options.__file="packages/alert/src/main.vue";var ia=ta.exports;ia.install=function(e){e.component(ia.name,ia)};var na=ia,ra=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-notification-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-notification",e.customClass,e.horizontalClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:function(t){e.clearTimer()},mouseleave:function(t){e.startTimer()},click:e.click}},[e.type||e.iconClass?i("i",{staticClass:"el-notification__icon",class:[e.typeClass,e.iconClass]}):e._e(),i("div",{staticClass:"el-notification__group",class:{"is-with-icon":e.typeClass||e.iconClass}},[i("h2",{staticClass:"el-notification__title",domProps:{textContent:e._s(e.title)}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.message,expression:"message"}],staticClass:"el-notification__content"},[e._t("default",[e.dangerouslyUseHTMLString?i("p",{domProps:{innerHTML:e._s(e.message)}}):i("p",[e._v(e._s(e.message))])])],2),e.showClose?i("div",{staticClass:"el-notification__closeBtn el-icon-close",on:{click:function(t){return t.stopPropagation(),e.close(t)}}}):e._e()])])])};ra._withStripped=!0;var sa={success:"success",info:"info",warning:"warning",error:"error"},aa=r({data:function(){return{visible:!1,title:"",message:"",duration:4500,type:"",showClose:!0,customClass:"",iconClass:"",onClose:null,onClick:null,closed:!1,verticalOffset:0,timer:null,dangerouslyUseHTMLString:!1,position:"top-right"}},computed:{typeClass:function(){return this.type&&sa[this.type]?"el-icon-"+sa[this.type]:""},horizontalClass:function(){return this.position.indexOf("right")>-1?"right":"left"},verticalProperty:function(){return/^top-/.test(this.position)?"top":"bottom"},positionStyle:function(){var e;return(e={})[this.verticalProperty]=this.verticalOffset+"px",e}},watch:{closed:function(e){e&&(this.visible=!1,this.$el.addEventListener("transitionend",this.destroyElement))}},methods:{destroyElement:function(){this.$el.removeEventListener("transitionend",this.destroyElement),this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},click:function(){"function"==typeof this.onClick&&this.onClick()},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose()},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout((function(){e.closed||e.close()}),this.duration))},keydown:function(e){46===e.keyCode||8===e.keyCode?this.clearTimer():27===e.keyCode?this.closed||this.close():this.startTimer()}},mounted:function(){var e=this;this.duration>0&&(this.timer=setTimeout((function(){e.closed||e.close()}),this.duration)),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},ra,[],!1,null,null,null);aa.options.__file="packages/notification/src/main.vue";var oa=aa.exports,la=di.a.extend(oa),ua=void 0,ca=[],da=1,ha=function e(t){if(!di.a.prototype.$isServer){var i=(t=Be()({},t)).onClose,n="notification_"+da++,r=t.position||"top-right";t.onClose=function(){e.close(n,i)},ua=new la({data:t}),Object(Br.isVNode)(t.message)&&(ua.$slots.default=[t.message],t.message="REPLACED_BY_VNODE"),ua.id=n,ua.$mount(),document.body.appendChild(ua.$el),ua.visible=!0,ua.dom=ua.$el,ua.dom.style.zIndex=b.PopupManager.nextZIndex();var s=t.offset||0;return ca.filter((function(e){return e.position===r})).forEach((function(e){s+=e.$el.offsetHeight+16})),s+=16,ua.verticalOffset=s,ca.push(ua),ua}};["success","warning","info","error"].forEach((function(e){ha[e]=function(t){return("string"==typeof t||Object(Br.isVNode)(t))&&(t={message:t}),t.type=e,ha(t)}})),ha.close=function(e,t){var i=-1,n=ca.length,r=ca.filter((function(t,n){return t.id===e&&(i=n,!0)}))[0];if(r&&("function"==typeof t&&t(r),ca.splice(i,1),!(n<=1)))for(var s=r.position,a=r.dom.offsetHeight,o=i;o=0;e--)ca[e].close()};var pa=ha,fa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-slider",class:{"is-vertical":e.vertical,"el-slider--with-input":e.showInput},attrs:{role:"slider","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal","aria-disabled":e.sliderDisabled}},[e.showInput&&!e.range?i("el-input-number",{ref:"input",staticClass:"el-slider__input",attrs:{step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.inputSize},on:{change:e.emitChange},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}):e._e(),i("div",{ref:"slider",staticClass:"el-slider__runway",class:{"show-input":e.showInput,disabled:e.sliderDisabled},style:e.runwayStyle,on:{click:e.onSliderClick}},[i("div",{staticClass:"el-slider__bar",style:e.barStyle}),i("slider-button",{ref:"button1",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}),e.range?i("slider-button",{ref:"button2",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.secondValue,callback:function(t){e.secondValue=t},expression:"secondValue"}}):e._e(),e._l(e.stops,(function(t,n){return e.showStops?i("div",{key:n,staticClass:"el-slider__stop",style:e.getStopStyle(t)}):e._e()})),e.markList.length>0?[i("div",e._l(e.markList,(function(t,n){return i("div",{key:n,staticClass:"el-slider__stop el-slider__marks-stop",style:e.getStopStyle(t.position)})})),0),i("div",{staticClass:"el-slider__marks"},e._l(e.markList,(function(t,n){return i("slider-marker",{key:n,style:e.getStopStyle(t.position),attrs:{mark:t.mark}})})),1)]:e._e()],2)],1)};fa._withStripped=!0;var ma=i(41),va=i.n(ma),ga=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{ref:"button",staticClass:"el-slider__button-wrapper",class:{hover:e.hovering,dragging:e.dragging},style:e.wrapperStyle,attrs:{tabindex:"0"},on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave,mousedown:e.onButtonDown,touchstart:e.onButtonDown,focus:e.handleMouseEnter,blur:e.handleMouseLeave,keydown:[function(t){return!("button"in t)&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:e.onLeftKeyDown(t)},function(t){return!("button"in t)&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button?null:e.onRightKeyDown(t)},function(t){return!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),e.onLeftKeyDown(t))},function(t){return!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),e.onRightKeyDown(t))}]}},[i("el-tooltip",{ref:"tooltip",attrs:{placement:"top","popper-class":e.tooltipClass,disabled:!e.showTooltip}},[i("span",{attrs:{slot:"content"},slot:"content"},[e._v(e._s(e.formatValue))]),i("div",{staticClass:"el-slider__button",class:{hover:e.hovering,dragging:e.dragging}})])],1)};ga._withStripped=!0;var _a=r({name:"ElSliderButton",components:{ElTooltip:De.a},props:{value:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:String},data:function(){return{hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:null,oldValue:this.value}},computed:{disabled:function(){return this.$parent.sliderDisabled},max:function(){return this.$parent.max},min:function(){return this.$parent.min},step:function(){return this.$parent.step},showTooltip:function(){return this.$parent.showTooltip},precision:function(){return this.$parent.precision},currentPosition:function(){return(this.value-this.min)/(this.max-this.min)*100+"%"},enableFormat:function(){return this.$parent.formatTooltip instanceof Function},formatValue:function(){return this.enableFormat&&this.$parent.formatTooltip(this.value)||this.value},wrapperStyle:function(){return this.vertical?{bottom:this.currentPosition}:{left:this.currentPosition}}},watch:{dragging:function(e){this.$parent.dragging=e}},methods:{displayTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!0)},hideTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!1)},handleMouseEnter:function(){this.hovering=!0,this.displayTooltip()},handleMouseLeave:function(){this.hovering=!1,this.hideTooltip()},onButtonDown:function(e){this.disabled||(e.preventDefault(),this.onDragStart(e),window.addEventListener("mousemove",this.onDragging),window.addEventListener("touchmove",this.onDragging),window.addEventListener("mouseup",this.onDragEnd),window.addEventListener("touchend",this.onDragEnd),window.addEventListener("contextmenu",this.onDragEnd))},onLeftKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)-this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onRightKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)+this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onDragStart:function(e){this.dragging=!0,this.isClick=!0,"touchstart"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?this.startY=e.clientY:this.startX=e.clientX,this.startPosition=parseFloat(this.currentPosition),this.newPosition=this.startPosition},onDragging:function(e){if(this.dragging){this.isClick=!1,this.displayTooltip(),this.$parent.resetSize();var t=0;"touchmove"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?(this.currentY=e.clientY,t=(this.startY-this.currentY)/this.$parent.sliderSize*100):(this.currentX=e.clientX,t=(this.currentX-this.startX)/this.$parent.sliderSize*100),this.newPosition=this.startPosition+t,this.setPosition(this.newPosition)}},onDragEnd:function(){var e=this;this.dragging&&(setTimeout((function(){e.dragging=!1,e.hideTooltip(),e.isClick||(e.setPosition(e.newPosition),e.$parent.emitChange())}),0),window.removeEventListener("mousemove",this.onDragging),window.removeEventListener("touchmove",this.onDragging),window.removeEventListener("mouseup",this.onDragEnd),window.removeEventListener("touchend",this.onDragEnd),window.removeEventListener("contextmenu",this.onDragEnd))},setPosition:function(e){var t=this;if(null!==e&&!isNaN(e)){e<0?e=0:e>100&&(e=100);var i=100/((this.max-this.min)/this.step),n=Math.round(e/i)*i*(this.max-this.min)*.01+this.min;n=parseFloat(n.toFixed(this.precision)),this.$emit("input",n),this.$nextTick((function(){t.displayTooltip(),t.$refs.tooltip&&t.$refs.tooltip.updatePopper()})),this.dragging||this.value===this.oldValue||(this.oldValue=this.value)}}}},ga,[],!1,null,null,null);_a.options.__file="packages/slider/src/button.vue";var ba=_a.exports,ya={name:"ElMarker",props:{mark:{type:[String,Object]}},render:function(){var e=arguments[0],t="string"==typeof this.mark?this.mark:this.mark.label;return e("div",{class:"el-slider__marks-text",style:this.mark.style||{}},[t])}},xa=r({name:"ElSlider",mixins:[C.a],inject:{elForm:{default:""}},props:{min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},value:{type:[Number,Array],default:0},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},inputSize:{type:String,default:"small"},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:Function,disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String},debounce:{type:Number,default:300},label:{type:String},tooltipClass:String,marks:Object},components:{ElInputNumber:va.a,SliderButton:ba,SliderMarker:ya},data:function(){return{firstValue:null,secondValue:null,oldValue:null,dragging:!1,sliderSize:1}},watch:{value:function(e,t){this.dragging||Array.isArray(e)&&Array.isArray(t)&&e.every((function(e,i){return e===t[i]}))||this.setValues()},dragging:function(e){e||this.setValues()},firstValue:function(e){this.range?this.$emit("input",[this.minValue,this.maxValue]):this.$emit("input",e)},secondValue:function(){this.range&&this.$emit("input",[this.minValue,this.maxValue])},min:function(){this.setValues()},max:function(){this.setValues()}},methods:{valueChanged:function(){var e=this;return this.range?![this.minValue,this.maxValue].every((function(t,i){return t===e.oldValue[i]})):this.value!==this.oldValue},setValues:function(){if(this.min>this.max)console.error("[Element Error][Slider]min should not be greater than max.");else{var e=this.value;this.range&&Array.isArray(e)?e[1]this.max?this.$emit("input",[this.max,this.max]):e[0]this.max?this.$emit("input",[e[0],this.max]):(this.firstValue=e[0],this.secondValue=e[1],this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",[this.minValue,this.maxValue]),this.oldValue=e.slice())):this.range||"number"!=typeof e||isNaN(e)||(ethis.max?this.$emit("input",this.max):(this.firstValue=e,this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",e),this.oldValue=e)))}},setPosition:function(e){var t=this.min+e*(this.max-this.min)/100;if(this.range){var i=void 0;i=Math.abs(this.minValue-t)this.secondValue?"button1":"button2",this.$refs[i].setPosition(e)}else this.$refs.button1.setPosition(e)},onSliderClick:function(e){if(!this.sliderDisabled&&!this.dragging){if(this.resetSize(),this.vertical){var t=this.$refs.slider.getBoundingClientRect().bottom;this.setPosition((t-e.clientY)/this.sliderSize*100)}else{var i=this.$refs.slider.getBoundingClientRect().left;this.setPosition((e.clientX-i)/this.sliderSize*100)}this.emitChange()}},resetSize:function(){this.$refs.slider&&(this.sliderSize=this.$refs.slider["client"+(this.vertical?"Height":"Width")])},emitChange:function(){var e=this;this.$nextTick((function(){e.$emit("change",e.range?[e.minValue,e.maxValue]:e.value)}))},getStopStyle:function(e){return this.vertical?{bottom:e+"%"}:{left:e+"%"}}},computed:{stops:function(){var e=this;if(!this.showStops||this.min>this.max)return[];if(0===this.step)return[];for(var t=(this.max-this.min)/this.step,i=100*this.step/(this.max-this.min),n=[],r=1;r100*(e.maxValue-e.min)/(e.max-e.min)})):n.filter((function(t){return t>100*(e.firstValue-e.min)/(e.max-e.min)}))},markList:function(){var e=this;return this.marks?Object.keys(this.marks).map(parseFloat).sort((function(e,t){return e-t})).filter((function(t){return t<=e.max&&t>=e.min})).map((function(t){return{point:t,position:100*(t-e.min)/(e.max-e.min),mark:e.marks[t]}})):[]},minValue:function(){return Math.min(this.firstValue,this.secondValue)},maxValue:function(){return Math.max(this.firstValue,this.secondValue)},barSize:function(){return this.range?100*(this.maxValue-this.minValue)/(this.max-this.min)+"%":100*(this.firstValue-this.min)/(this.max-this.min)+"%"},barStart:function(){return this.range?100*(this.minValue-this.min)/(this.max-this.min)+"%":"0%"},precision:function(){var e=[this.min,this.max,this.step].map((function(e){var t=(""+e).split(".")[1];return t?t.length:0}));return Math.max.apply(null,e)},runwayStyle:function(){return this.vertical?{height:this.height}:{}},barStyle:function(){return this.vertical?{height:this.barSize,bottom:this.barStart}:{width:this.barSize,left:this.barStart}},sliderDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},mounted:function(){var e=void 0;this.range?(Array.isArray(this.value)?(this.firstValue=Math.max(this.min,this.value[0]),this.secondValue=Math.min(this.max,this.value[1])):(this.firstValue=this.min,this.secondValue=this.max),this.oldValue=[this.firstValue,this.secondValue],e=this.firstValue+"-"+this.secondValue):("number"!=typeof this.value||isNaN(this.value)?this.firstValue=this.min:this.firstValue=Math.min(this.max,Math.max(this.min,this.value)),this.oldValue=this.firstValue,e=this.firstValue),this.$el.setAttribute("aria-valuetext",e),this.$el.setAttribute("aria-label",this.label?this.label:"slider between "+this.min+" and "+this.max),this.resetSize(),window.addEventListener("resize",this.resetSize)},beforeDestroy:function(){window.removeEventListener("resize",this.resetSize)}},fa,[],!1,null,null,null);xa.options.__file="packages/slider/src/main.vue";var ka=xa.exports;ka.install=function(e){e.component(ka.name,ka)};var wa=ka,Ca=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-loading-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-loading-mask",class:[e.customClass,{"is-fullscreen":e.fullscreen}],style:{backgroundColor:e.background||""}},[i("div",{staticClass:"el-loading-spinner"},[e.spinner?i("i",{class:e.spinner}):i("svg",{staticClass:"circular",attrs:{viewBox:"25 25 50 50"}},[i("circle",{staticClass:"path",attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]),e.text?i("p",{staticClass:"el-loading-text"},[e._v(e._s(e.text))]):e._e()])])])};Ca._withStripped=!0;var Sa=r({data:function(){return{text:null,spinner:null,background:null,fullscreen:!0,visible:!1,customClass:""}},methods:{handleAfterLeave:function(){this.$emit("after-leave")},setText:function(e){this.text=e}}},Ca,[],!1,null,null,null);Sa.options.__file="packages/loading/src/loading.vue";var Oa=Sa.exports,Da=i(32),Ea=i.n(Da),Ta=di.a.extend(Oa),$a={install:function(e){if(!e.prototype.$isServer){var t=function(t,n){n.value?e.nextTick((function(){n.modifiers.fullscreen?(t.originalPosition=Object(fe.getStyle)(document.body,"position"),t.originalOverflow=Object(fe.getStyle)(document.body,"overflow"),t.maskStyle.zIndex=b.PopupManager.nextZIndex(),Object(fe.addClass)(t.mask,"is-fullscreen"),i(document.body,t,n)):(Object(fe.removeClass)(t.mask,"is-fullscreen"),n.modifiers.body?(t.originalPosition=Object(fe.getStyle)(document.body,"position"),["top","left"].forEach((function(e){var i="top"===e?"scrollTop":"scrollLeft";t.maskStyle[e]=t.getBoundingClientRect()[e]+document.body[i]+document.documentElement[i]-parseInt(Object(fe.getStyle)(document.body,"margin-"+e),10)+"px"})),["height","width"].forEach((function(e){t.maskStyle[e]=t.getBoundingClientRect()[e]+"px"})),i(document.body,t,n)):(t.originalPosition=Object(fe.getStyle)(t,"position"),i(t,t,n)))})):(Ea()(t.instance,(function(e){if(t.instance.hiding){t.domVisible=!1;var i=n.modifiers.fullscreen||n.modifiers.body?document.body:t;Object(fe.removeClass)(i,"el-loading-parent--relative"),Object(fe.removeClass)(i,"el-loading-parent--hidden"),t.instance.hiding=!1}}),300,!0),t.instance.visible=!1,t.instance.hiding=!0)},i=function(t,i,n){i.domVisible||"none"===Object(fe.getStyle)(i,"display")||"hidden"===Object(fe.getStyle)(i,"visibility")?i.domVisible&&!0===i.instance.hiding&&(i.instance.visible=!0,i.instance.hiding=!1):(Object.keys(i.maskStyle).forEach((function(e){i.mask.style[e]=i.maskStyle[e]})),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&Object(fe.addClass)(t,"el-loading-parent--relative"),n.modifiers.fullscreen&&n.modifiers.lock&&Object(fe.addClass)(t,"el-loading-parent--hidden"),i.domVisible=!0,t.appendChild(i.mask),e.nextTick((function(){i.instance.hiding?i.instance.$emit("after-leave"):i.instance.visible=!0})),i.domInserted=!0)};e.directive("loading",{bind:function(e,i,n){var r=e.getAttribute("element-loading-text"),s=e.getAttribute("element-loading-spinner"),a=e.getAttribute("element-loading-background"),o=e.getAttribute("element-loading-custom-class"),l=n.context,u=new Ta({el:document.createElement("div"),data:{text:l&&l[r]||r,spinner:l&&l[s]||s,background:l&&l[a]||a,customClass:l&&l[o]||o,fullscreen:!!i.modifiers.fullscreen}});e.instance=u,e.mask=u.$el,e.maskStyle={},i.value&&t(e,i)},update:function(e,i){e.instance.setText(e.getAttribute("element-loading-text")),i.oldValue!==i.value&&t(e,i)},unbind:function(e,i){e.domInserted&&(e.mask&&e.mask.parentNode&&e.mask.parentNode.removeChild(e.mask),t(e,{value:!1,modifiers:i.modifiers})),e.instance&&e.instance.$destroy()}})}}},Pa=$a,ja=di.a.extend(Oa),Ma={text:null,fullscreen:!0,body:!1,lock:!1,customClass:""},Ia=void 0;ja.prototype.originalPosition="",ja.prototype.originalOverflow="",ja.prototype.close=function(){var e=this;this.fullscreen&&(Ia=void 0),Ea()(this,(function(t){var i=e.fullscreen||e.body?document.body:e.target;Object(fe.removeClass)(i,"el-loading-parent--relative"),Object(fe.removeClass)(i,"el-loading-parent--hidden"),e.$el&&e.$el.parentNode&&e.$el.parentNode.removeChild(e.$el),e.$destroy()}),300),this.visible=!1};var Aa=function(e,t,i){var n={};e.fullscreen?(i.originalPosition=Object(fe.getStyle)(document.body,"position"),i.originalOverflow=Object(fe.getStyle)(document.body,"overflow"),n.zIndex=b.PopupManager.nextZIndex()):e.body?(i.originalPosition=Object(fe.getStyle)(document.body,"position"),["top","left"].forEach((function(t){var i="top"===t?"scrollTop":"scrollLeft";n[t]=e.target.getBoundingClientRect()[t]+document.body[i]+document.documentElement[i]+"px"})),["height","width"].forEach((function(t){n[t]=e.target.getBoundingClientRect()[t]+"px"}))):i.originalPosition=Object(fe.getStyle)(t,"position"),Object.keys(n).forEach((function(e){i.$el.style[e]=n[e]}))},Na=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!di.a.prototype.$isServer){if("string"==typeof(e=Be()({},Ma,e)).target&&(e.target=document.querySelector(e.target)),e.target=e.target||document.body,e.target!==document.body?e.fullscreen=!1:e.body=!0,e.fullscreen&&Ia)return Ia;var t=e.body?document.body:e.target,i=new ja({el:document.createElement("div"),data:e});return Aa(e,t,i),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&Object(fe.addClass)(t,"el-loading-parent--relative"),e.fullscreen&&e.lock&&Object(fe.addClass)(t,"el-loading-parent--hidden"),t.appendChild(i.$el),di.a.nextTick((function(){i.visible=!0})),e.fullscreen&&(Ia=i),i}},La={install:function(e){e.use(Pa),e.prototype.$loading=Na},directive:Pa,service:Na},Fa=function(){var e=this.$createElement;return(this._self._c||e)("i",{class:"el-icon-"+this.name})};Fa._withStripped=!0;var Va=r({name:"ElIcon",props:{name:String}},Fa,[],!1,null,null,null);Va.options.__file="packages/icon/src/icon.vue";var za=Va.exports;za.install=function(e){e.component(za.name,za)};var Ra=za,Ba={name:"ElRow",componentName:"ElRow",props:{tag:{type:String,default:"div"},gutter:Number,type:String,justify:{type:String,default:"start"},align:String},computed:{style:function(){var e={};return this.gutter&&(e.marginLeft="-"+this.gutter/2+"px",e.marginRight=e.marginLeft),e}},render:function(e){return e(this.tag,{class:["el-row","start"!==this.justify?"is-justify-"+this.justify:"",this.align?"is-align-"+this.align:"",{"el-row--flex":"flex"===this.type}],style:this.style},this.$slots.default)},install:function(e){e.component(Ba.name,Ba)}},Ha=Ba,Wa="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},qa={name:"ElCol",props:{span:{type:Number,default:24},tag:{type:String,default:"div"},offset:Number,pull:Number,push:Number,xs:[Number,Object],sm:[Number,Object],md:[Number,Object],lg:[Number,Object],xl:[Number,Object]},computed:{gutter:function(){for(var e=this.$parent;e&&"ElRow"!==e.$options.componentName;)e=e.$parent;return e?e.gutter:0}},render:function(e){var t=this,i=[],n={};return this.gutter&&(n.paddingLeft=this.gutter/2+"px",n.paddingRight=n.paddingLeft),["span","offset","pull","push"].forEach((function(e){(t[e]||0===t[e])&&i.push("span"!==e?"el-col-"+e+"-"+t[e]:"el-col-"+t[e])})),["xs","sm","md","lg","xl"].forEach((function(e){if("number"==typeof t[e])i.push("el-col-"+e+"-"+t[e]);else if("object"===Wa(t[e])){var n=t[e];Object.keys(n).forEach((function(t){i.push("span"!==t?"el-col-"+e+"-"+t+"-"+n[t]:"el-col-"+e+"-"+n[t])}))}})),e(this.tag,{class:["el-col",i],style:n},this.$slots.default)},install:function(e){e.component(qa.name,qa)}},Ua=qa,Ga=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition-group",{class:["el-upload-list","el-upload-list--"+e.listType,{"is-disabled":e.disabled}],attrs:{tag:"ul",name:"el-list"}},e._l(e.files,(function(t){return i("li",{key:t.uid,class:["el-upload-list__item","is-"+t.status,e.focusing?"focusing":""],attrs:{tabindex:"0"},on:{keydown:function(i){if(!("button"in i)&&e._k(i.keyCode,"delete",[8,46],i.key,["Backspace","Delete","Del"]))return null;!e.disabled&&e.$emit("remove",t)},focus:function(t){e.focusing=!0},blur:function(t){e.focusing=!1},click:function(t){e.focusing=!1}}},[e._t("default",["uploading"!==t.status&&["picture-card","picture"].indexOf(e.listType)>-1?i("img",{staticClass:"el-upload-list__item-thumbnail",attrs:{src:t.url,alt:""}}):e._e(),i("a",{staticClass:"el-upload-list__item-name",on:{click:function(i){e.handleClick(t)}}},[i("i",{staticClass:"el-icon-document"}),e._v(e._s(t.name)+"\n ")]),i("label",{staticClass:"el-upload-list__item-status-label"},[i("i",{class:{"el-icon-upload-success":!0,"el-icon-circle-check":"text"===e.listType,"el-icon-check":["picture-card","picture"].indexOf(e.listType)>-1}})]),e.disabled?e._e():i("i",{staticClass:"el-icon-close",on:{click:function(i){e.$emit("remove",t)}}}),e.disabled?e._e():i("i",{staticClass:"el-icon-close-tip"},[e._v(e._s(e.t("el.upload.deleteTip")))]),"uploading"===t.status?i("el-progress",{attrs:{type:"picture-card"===e.listType?"circle":"line","stroke-width":"picture-card"===e.listType?6:2,percentage:e.parsePercentage(t.percentage)}}):e._e(),"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-actions"},[e.handlePreview&&"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-preview",on:{click:function(i){e.handlePreview(t)}}},[i("i",{staticClass:"el-icon-zoom-in"})]):e._e(),e.disabled?e._e():i("span",{staticClass:"el-upload-list__item-delete",on:{click:function(i){e.$emit("remove",t)}}},[i("i",{staticClass:"el-icon-delete"})])]):e._e()],{file:t})],2)})),0)};Ga._withStripped=!0;var Ya=i(33),Ka=i.n(Ya),Xa=r({name:"ElUploadList",mixins:[f.a],data:function(){return{focusing:!1}},components:{ElProgress:Ka.a},props:{files:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},handlePreview:Function,listType:String},methods:{parsePercentage:function(e){return parseInt(e,10)},handleClick:function(e){this.handlePreview&&this.handlePreview(e)}}},Ga,[],!1,null,null,null);Xa.options.__file="packages/upload/src/upload-list.vue";var Za=Xa.exports,Qa=i(24),Ja=i.n(Qa);var eo=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{staticClass:"el-upload-dragger",class:{"is-dragover":e.dragover},on:{drop:function(t){return t.preventDefault(),e.onDrop(t)},dragover:function(t){return t.preventDefault(),e.onDragover(t)},dragleave:function(t){t.preventDefault(),e.dragover=!1}}},[e._t("default")],2)};eo._withStripped=!0;var to=r({name:"ElUploadDrag",props:{disabled:Boolean},inject:{uploader:{default:""}},data:function(){return{dragover:!1}},methods:{onDragover:function(){this.disabled||(this.dragover=!0)},onDrop:function(e){if(!this.disabled&&this.uploader){var t=this.uploader.accept;this.dragover=!1,t?this.$emit("file",[].slice.call(e.dataTransfer.files).filter((function(e){var i=e.type,n=e.name,r=n.indexOf(".")>-1?"."+n.split(".").pop():"",s=i.replace(/\/.*$/,"");return t.split(",").map((function(e){return e.trim()})).filter((function(e){return e})).some((function(e){return/\..+$/.test(e)?r===e:/\/\*$/.test(e)?s===e.replace(/\/\*$/,""):!!/^[^\/]+\/[^\/]+$/.test(e)&&i===e}))}))):this.$emit("file",e.dataTransfer.files)}}}},eo,[],!1,null,null,null);to.options.__file="packages/upload/src/upload-dragger.vue";var io=r({inject:["uploader"],components:{UploadDragger:to.exports},props:{type:String,action:{type:String,required:!0},name:{type:String,default:"file"},data:Object,headers:Object,withCredentials:Boolean,multiple:Boolean,accept:String,onStart:Function,onProgress:Function,onSuccess:Function,onError:Function,beforeUpload:Function,drag:Boolean,onPreview:{type:Function,default:function(){}},onRemove:{type:Function,default:function(){}},fileList:Array,autoUpload:Boolean,listType:String,httpRequest:{type:Function,default:function(e){if("undefined"!=typeof XMLHttpRequest){var t=new XMLHttpRequest,i=e.action;t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var n=new FormData;e.data&&Object.keys(e.data).forEach((function(t){n.append(t,e.data[t])})),n.append(e.filename,e.file,e.file.name),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300)return e.onError(function(e,t,i){var n=void 0;n=i.response?""+(i.response.error||i.response):i.responseText?""+i.responseText:"fail to post "+e+" "+i.status;var r=new Error(n);return r.status=i.status,r.method="post",r.url=e,r}(i,0,t));e.onSuccess(function(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(e){return t}}(t))},t.open("post",i,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);var r=e.headers||{};for(var s in r)r.hasOwnProperty(s)&&null!==r[s]&&t.setRequestHeader(s,r[s]);return t.send(n),t}}},disabled:Boolean,limit:Number,onExceed:Function},data:function(){return{mouseover:!1,reqs:{}}},methods:{isImage:function(e){return-1!==e.indexOf("image")},handleChange:function(e){var t=e.target.files;t&&this.uploadFiles(t)},uploadFiles:function(e){var t=this;if(this.limit&&this.fileList.length+e.length>this.limit)this.onExceed&&this.onExceed(e,this.fileList);else{var i=Array.prototype.slice.call(e);this.multiple||(i=i.slice(0,1)),0!==i.length&&i.forEach((function(e){t.onStart(e),t.autoUpload&&t.upload(e)}))}},upload:function(e){var t=this;if(this.$refs.input.value=null,!this.beforeUpload)return this.post(e);var i=this.beforeUpload(e);i&&i.then?i.then((function(i){var n=Object.prototype.toString.call(i);if("[object File]"===n||"[object Blob]"===n){for(var r in"[object Blob]"===n&&(i=new File([i],e.name,{type:e.type})),e)e.hasOwnProperty(r)&&(i[r]=e[r]);t.post(i)}else t.post(e)}),(function(){t.onRemove(null,e)})):!1!==i?this.post(e):this.onRemove(null,e)},abort:function(e){var t=this.reqs;if(e){var i=e;e.uid&&(i=e.uid),t[i]&&t[i].abort()}else Object.keys(t).forEach((function(e){t[e]&&t[e].abort(),delete t[e]}))},post:function(e){var t=this,i=e.uid,n={headers:this.headers,withCredentials:this.withCredentials,file:e,data:this.data,filename:this.name,action:this.action,onProgress:function(i){t.onProgress(i,e)},onSuccess:function(n){t.onSuccess(n,e),delete t.reqs[i]},onError:function(n){t.onError(n,e),delete t.reqs[i]}},r=this.httpRequest(n);this.reqs[i]=r,r&&r.then&&r.then(n.onSuccess,n.onError)},handleClick:function(){this.disabled||(this.$refs.input.value=null,this.$refs.input.click())},handleKeydown:function(e){e.target===e.currentTarget&&(13!==e.keyCode&&32!==e.keyCode||this.handleClick())}},render:function(e){var t=this.handleClick,i=this.drag,n=this.name,r=this.handleChange,s=this.multiple,a=this.accept,o=this.listType,l=this.uploadFiles,u=this.disabled,c={class:{"el-upload":!0},on:{click:t,keydown:this.handleKeydown}};return c.class["el-upload--"+o]=!0,e("div",Ja()([c,{attrs:{tabindex:"0"}}]),[i?e("upload-dragger",{attrs:{disabled:u},on:{file:l}},[this.$slots.default]):this.$slots.default,e("input",{class:"el-upload__input",attrs:{type:"file",name:n,multiple:s,accept:a},ref:"input",on:{change:r}})])}},void 0,void 0,!1,null,null,null);io.options.__file="packages/upload/src/upload.vue";var no=io.exports;function ro(){}var so=r({name:"ElUpload",mixins:[k.a],components:{ElProgress:Ka.a,UploadList:Za,Upload:no},provide:function(){return{uploader:this}},inject:{elForm:{default:""}},props:{action:{type:String,required:!0},headers:{type:Object,default:function(){return{}}},data:Object,multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,dragger:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:String,type:{type:String,default:"select"},beforeUpload:Function,beforeRemove:Function,onRemove:{type:Function,default:ro},onChange:{type:Function,default:ro},onPreview:{type:Function},onSuccess:{type:Function,default:ro},onProgress:{type:Function,default:ro},onError:{type:Function,default:ro},fileList:{type:Array,default:function(){return[]}},autoUpload:{type:Boolean,default:!0},listType:{type:String,default:"text"},httpRequest:Function,disabled:Boolean,limit:Number,onExceed:{type:Function,default:ro}},data:function(){return{uploadFiles:[],dragOver:!1,draging:!1,tempIndex:1}},computed:{uploadDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{listType:function(e){"picture-card"!==e&&"picture"!==e||(this.uploadFiles=this.uploadFiles.map((function(e){if(!e.url&&e.raw)try{e.url=URL.createObjectURL(e.raw)}catch(e){console.error("[Element Error][Upload]",e)}return e})))},fileList:{immediate:!0,handler:function(e){var t=this;this.uploadFiles=e.map((function(e){return e.uid=e.uid||Date.now()+t.tempIndex++,e.status=e.status||"success",e}))}}},methods:{handleStart:function(e){e.uid=Date.now()+this.tempIndex++;var t={status:"ready",name:e.name,size:e.size,percentage:0,uid:e.uid,raw:e};if("picture-card"===this.listType||"picture"===this.listType)try{t.url=URL.createObjectURL(e)}catch(e){return void console.error("[Element Error][Upload]",e)}this.uploadFiles.push(t),this.onChange(t,this.uploadFiles)},handleProgress:function(e,t){var i=this.getFile(t);this.onProgress(e,i,this.uploadFiles),i.status="uploading",i.percentage=e.percent||0},handleSuccess:function(e,t){var i=this.getFile(t);i&&(i.status="success",i.response=e,this.onSuccess(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles))},handleError:function(e,t){var i=this.getFile(t),n=this.uploadFiles;i.status="fail",n.splice(n.indexOf(i),1),this.onError(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles)},handleRemove:function(e,t){var i=this;t&&(e=this.getFile(t));var n=function(){i.abort(e);var t=i.uploadFiles;t.splice(t.indexOf(e),1),i.onRemove(e,t)};if(this.beforeRemove){if("function"==typeof this.beforeRemove){var r=this.beforeRemove(e,this.uploadFiles);r&&r.then?r.then((function(){n()}),ro):!1!==r&&n()}}else n()},getFile:function(e){var t=this.uploadFiles,i=void 0;return t.every((function(t){return!(i=e.uid===t.uid?t:null)})),i},abort:function(e){this.$refs["upload-inner"].abort(e)},clearFiles:function(){this.uploadFiles=[]},submit:function(){var e=this;this.uploadFiles.filter((function(e){return"ready"===e.status})).forEach((function(t){e.$refs["upload-inner"].upload(t.raw)}))},getMigratingConfig:function(){return{props:{"default-file-list":"default-file-list is renamed to file-list.","show-upload-list":"show-upload-list is renamed to show-file-list.","thumbnail-mode":"thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan"}}}},beforeDestroy:function(){this.uploadFiles.forEach((function(e){e.url&&0===e.url.indexOf("blob:")&&URL.revokeObjectURL(e.url)}))},render:function(e){var t=this,i=void 0;this.showFileList&&(i=e(Za,{attrs:{disabled:this.uploadDisabled,listType:this.listType,files:this.uploadFiles,handlePreview:this.onPreview},on:{remove:this.handleRemove}},[function(e){if(t.$scopedSlots.file)return t.$scopedSlots.file({file:e.file})}]));var n=e("upload",{props:{type:this.type,drag:this.drag,action:this.action,multiple:this.multiple,"before-upload":this.beforeUpload,"with-credentials":this.withCredentials,headers:this.headers,name:this.name,data:this.data,accept:this.accept,fileList:this.uploadFiles,autoUpload:this.autoUpload,listType:this.listType,disabled:this.uploadDisabled,limit:this.limit,"on-exceed":this.onExceed,"on-start":this.handleStart,"on-progress":this.handleProgress,"on-success":this.handleSuccess,"on-error":this.handleError,"on-preview":this.onPreview,"on-remove":this.handleRemove,"http-request":this.httpRequest},ref:"upload-inner"},[this.$slots.trigger||this.$slots.default]);return e("div",["picture-card"===this.listType?i:"",this.$slots.trigger?[n,this.$slots.default]:n,this.$slots.tip,"picture-card"!==this.listType?i:""])}},void 0,void 0,!1,null,null,null);so.options.__file="packages/upload/src/index.vue";var ao=so.exports;ao.install=function(e){e.component(ao.name,ao)};var oo=ao,lo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?i("div",{staticClass:"el-progress-bar"},[i("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[i("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?i("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):i("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[i("svg",{attrs:{viewBox:"0 0 100 100"}},[i("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),i("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":e.strokeLinecap,"stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?i("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?i("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};lo._withStripped=!0;var uo=r({name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},strokeLinecap:{type:String,default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort((function(e,t){return e.percentage-t.percentage})),i=0;ie)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map((function(e,i){return"string"==typeof e?{color:e,percentage:(i+1)*t}:e}))}}},lo,[],!1,null,null,null);uo.options.__file="packages/progress/src/progress.vue";var co=uo.exports;co.install=function(e){e.component(co.name,co)};var ho=co,po=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-spinner"},[t("svg",{staticClass:"el-spinner-inner",style:{width:this.radius/2+"px",height:this.radius/2+"px"},attrs:{viewBox:"0 0 50 50"}},[t("circle",{staticClass:"path",attrs:{cx:"25",cy:"25",r:"20",fill:"none",stroke:this.strokeColor,"stroke-width":this.strokeWidth}})])])};po._withStripped=!0;var fo=r({name:"ElSpinner",props:{type:String,radius:{type:Number,default:100},strokeWidth:{type:Number,default:5},strokeColor:{type:String,default:"#efefef"}}},po,[],!1,null,null,null);fo.options.__file="packages/spinner/src/spinner.vue";var mo=fo.exports;mo.install=function(e){e.component(mo.name,mo)};var vo=mo,go=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-message-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-message",e.type&&!e.iconClass?"el-message--"+e.type:"",e.center?"is-center":"",e.showClose?"is-closable":"",e.customClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:e.clearTimer,mouseleave:e.startTimer}},[e.iconClass?i("i",{class:e.iconClass}):i("i",{class:e.typeClass}),e._t("default",[e.dangerouslyUseHTMLString?i("p",{staticClass:"el-message__content",domProps:{innerHTML:e._s(e.message)}}):i("p",{staticClass:"el-message__content"},[e._v(e._s(e.message))])]),e.showClose?i("i",{staticClass:"el-message__closeBtn el-icon-close",on:{click:e.close}}):e._e()],2)])};go._withStripped=!0;var _o={success:"success",info:"info",warning:"warning",error:"error"},bo=r({data:function(){return{visible:!1,message:"",duration:3e3,type:"info",iconClass:"",customClass:"",onClose:null,showClose:!1,closed:!1,verticalOffset:20,timer:null,dangerouslyUseHTMLString:!1,center:!1}},computed:{typeClass:function(){return this.type&&!this.iconClass?"el-message__icon el-icon-"+_o[this.type]:""},positionStyle:function(){return{top:this.verticalOffset+"px"}}},watch:{closed:function(e){e&&(this.visible=!1)}},methods:{handleAfterLeave:function(){this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose(this)},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout((function(){e.closed||e.close()}),this.duration))},keydown:function(e){27===e.keyCode&&(this.closed||this.close())}},mounted:function(){this.startTimer(),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},go,[],!1,null,null,null);bo.options.__file="packages/message/src/main.vue";var yo=bo.exports,xo=i(15),ko=Object.assign||function(e){for(var t=1;tSo.length-1))for(var a=n;a=0;e--)So[e].close()};var Eo=Do,To=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-badge"},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-center"}},[i("sup",{directives:[{name:"show",rawName:"v-show",value:!e.hidden&&(e.content||0===e.content||e.isDot),expression:"!hidden && (content || content === 0 || isDot)"}],staticClass:"el-badge__content",class:["el-badge__content--"+e.type,{"is-fixed":e.$slots.default,"is-dot":e.isDot}],domProps:{textContent:e._s(e.content)}})])],2)};To._withStripped=!0;var $o=r({name:"ElBadge",props:{value:[String,Number],max:Number,isDot:Boolean,hidden:Boolean,type:{type:String,validator:function(e){return["primary","success","warning","info","danger"].indexOf(e)>-1}}},computed:{content:function(){if(!this.isDot){var e=this.value,t=this.max;return"number"==typeof e&&"number"==typeof t&&t0&&e-1this.value,i=this.allowHalf&&this.pointerAtLeftHalf&&e-.5<=this.currentValue&&e>this.currentValue;return t||i},getIconStyle:function(e){var t=this.rateDisabled?this.disabledVoidColor:this.voidColor;return{color:e<=this.currentValue?this.activeColor:t}},selectValue:function(e){this.rateDisabled||(this.allowHalf&&this.pointerAtLeftHalf?(this.$emit("input",this.currentValue),this.$emit("change",this.currentValue)):(this.$emit("input",e),this.$emit("change",e)))},handleKey:function(e){if(!this.rateDisabled){var t=this.currentValue,i=e.keyCode;38===i||39===i?(this.allowHalf?t+=.5:t+=1,e.stopPropagation(),e.preventDefault()):37!==i&&40!==i||(this.allowHalf?t-=.5:t-=1,e.stopPropagation(),e.preventDefault()),t=(t=t<0?0:t)>this.max?this.max:t,this.$emit("input",t),this.$emit("change",t)}},setCurrentValue:function(e,t){if(!this.rateDisabled){if(this.allowHalf){var i=t.target;Object(fe.hasClass)(i,"el-rate__item")&&(i=i.querySelector(".el-rate__icon")),Object(fe.hasClass)(i,"el-rate__decimal")&&(i=i.parentNode),this.pointerAtLeftHalf=2*t.offsetX<=i.clientWidth,this.currentValue=this.pointerAtLeftHalf?e-.5:e}else this.currentValue=e;this.hoverIndex=e}},resetCurrentValue:function(){this.rateDisabled||(this.allowHalf&&(this.pointerAtLeftHalf=this.value!==Math.floor(this.value)),this.currentValue=this.value,this.hoverIndex=-1)}},created:function(){this.value||this.$emit("input",0)}},Lo,[],!1,null,null,null);Fo.options.__file="packages/rate/src/main.vue";var Vo=Fo.exports;Vo.install=function(e){e.component(Vo.name,Vo)};var zo=Vo,Ro=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-steps",class:[!this.simple&&"el-steps--"+this.direction,this.simple&&"el-steps--simple"]},[this._t("default")],2)};Ro._withStripped=!0;var Bo=r({name:"ElSteps",mixins:[k.a],props:{space:[Number,String],active:Number,direction:{type:String,default:"horizontal"},alignCenter:Boolean,simple:Boolean,finishStatus:{type:String,default:"finish"},processStatus:{type:String,default:"process"}},data:function(){return{steps:[],stepOffset:0}},methods:{getMigratingConfig:function(){return{props:{center:"center is removed."}}}},watch:{active:function(e,t){this.$emit("change",e,t)},steps:function(e){e.forEach((function(e,t){e.index=t}))}}},Ro,[],!1,null,null,null);Bo.options.__file="packages/steps/src/steps.vue";var Ho=Bo.exports;Ho.install=function(e){e.component(Ho.name,Ho)};var Wo=Ho,qo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-step",class:[!e.isSimple&&"is-"+e.$parent.direction,e.isSimple&&"is-simple",e.isLast&&!e.space&&!e.isCenter&&"is-flex",e.isCenter&&!e.isVertical&&!e.isSimple&&"is-center"],style:e.style},[i("div",{staticClass:"el-step__head",class:"is-"+e.currentStatus},[i("div",{staticClass:"el-step__line",style:e.isLast?"":{marginRight:e.$parent.stepOffset+"px"}},[i("i",{staticClass:"el-step__line-inner",style:e.lineStyle})]),i("div",{staticClass:"el-step__icon",class:"is-"+(e.icon?"icon":"text")},["success"!==e.currentStatus&&"error"!==e.currentStatus?e._t("icon",[e.icon?i("i",{staticClass:"el-step__icon-inner",class:[e.icon]}):e._e(),e.icon||e.isSimple?e._e():i("div",{staticClass:"el-step__icon-inner"},[e._v(e._s(e.index+1))])]):i("i",{staticClass:"el-step__icon-inner is-status",class:["el-icon-"+("success"===e.currentStatus?"check":"close")]})],2)]),i("div",{staticClass:"el-step__main"},[i("div",{ref:"title",staticClass:"el-step__title",class:["is-"+e.currentStatus]},[e._t("title",[e._v(e._s(e.title))])],2),e.isSimple?i("div",{staticClass:"el-step__arrow"}):i("div",{staticClass:"el-step__description",class:["is-"+e.currentStatus]},[e._t("description",[e._v(e._s(e.description))])],2)])])};qo._withStripped=!0;var Uo=r({name:"ElStep",props:{title:String,icon:String,description:String,status:String},data:function(){return{index:-1,lineStyle:{},internalStatus:""}},beforeCreate:function(){this.$parent.steps.push(this)},beforeDestroy:function(){var e=this.$parent.steps,t=e.indexOf(this);t>=0&&e.splice(t,1)},computed:{currentStatus:function(){return this.status||this.internalStatus},prevStatus:function(){var e=this.$parent.steps[this.index-1];return e?e.currentStatus:"wait"},isCenter:function(){return this.$parent.alignCenter},isVertical:function(){return"vertical"===this.$parent.direction},isSimple:function(){return this.$parent.simple},isLast:function(){var e=this.$parent;return e.steps[e.steps.length-1]===this},stepsCount:function(){return this.$parent.steps.length},space:function(){var e=this.isSimple,t=this.$parent.space;return e?"":t},style:function(){var e={},t=this.$parent.steps.length,i="number"==typeof this.space?this.space+"px":this.space?this.space:100/(t-(this.isCenter?0:1))+"%";return e.flexBasis=i,this.isVertical||(this.isLast?e.maxWidth=100/this.stepsCount+"%":e.marginRight=-this.$parent.stepOffset+"px"),e}},methods:{updateStatus:function(e){var t=this.$parent.$children[this.index-1];e>this.index?this.internalStatus=this.$parent.finishStatus:e===this.index&&"error"!==this.prevStatus?this.internalStatus=this.$parent.processStatus:this.internalStatus="wait",t&&t.calcProgress(this.internalStatus)},calcProgress:function(e){var t=100,i={};i.transitionDelay=150*this.index+"ms",e===this.$parent.processStatus?(this.currentStatus,t=0):"wait"===e&&(t=0,i.transitionDelay=-150*this.index+"ms"),i.borderWidth=t&&!this.isSimple?"1px":0,"vertical"===this.$parent.direction?i.height=t+"%":i.width=t+"%",this.lineStyle=i}},mounted:function(){var e=this,t=this.$watch("index",(function(i){e.$watch("$parent.active",e.updateStatus,{immediate:!0}),e.$watch("$parent.processStatus",(function(){var t=e.$parent.active;e.updateStatus(t)}),{immediate:!0}),t()}))}},qo,[],!1,null,null,null);Uo.options.__file="packages/steps/src/step.vue";var Go=Uo.exports;Go.install=function(e){e.component(Go.name,Go)};var Yo=Go,Ko=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:e.carouselClasses,on:{mouseenter:function(t){return t.stopPropagation(),e.handleMouseEnter(t)},mouseleave:function(t){return t.stopPropagation(),e.handleMouseLeave(t)}}},[i("div",{staticClass:"el-carousel__container",style:{height:e.height}},[e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-left"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex>0),expression:"(arrow === 'always' || hover) && (loop || activeIndex > 0)"}],staticClass:"el-carousel__arrow el-carousel__arrow--left",attrs:{type:"button"},on:{mouseenter:function(t){e.handleButtonEnter("left")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex-1)}}},[i("i",{staticClass:"el-icon-arrow-left"})])]):e._e(),e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-right"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex0}))},carouselClasses:function(){var e=["el-carousel","el-carousel--"+this.direction];return"card"===this.type&&e.push("el-carousel--card"),e},indicatorsClasses:function(){var e=["el-carousel__indicators","el-carousel__indicators--"+this.direction];return this.hasLabel&&e.push("el-carousel__indicators--labels"),"outside"!==this.indicatorPosition&&"card"!==this.type||e.push("el-carousel__indicators--outside"),e}},watch:{items:function(e){e.length>0&&this.setActiveItem(this.initialIndex)},activeIndex:function(e,t){this.resetItemPosition(t),t>-1&&this.$emit("change",e,t)},autoplay:function(e){e?this.startTimer():this.pauseTimer()},loop:function(){this.setActiveItem(this.activeIndex)},interval:function(){this.pauseTimer(),this.startTimer()}},methods:{handleMouseEnter:function(){this.hover=!0,this.pauseTimer()},handleMouseLeave:function(){this.hover=!1,this.startTimer()},itemInStage:function(e,t){var i=this.items.length;return t===i-1&&e.inStage&&this.items[0].active||e.inStage&&this.items[t+1]&&this.items[t+1].active?"left":!!(0===t&&e.inStage&&this.items[i-1].active||e.inStage&&this.items[t-1]&&this.items[t-1].active)&&"right"},handleButtonEnter:function(e){var t=this;"vertical"!==this.direction&&this.items.forEach((function(i,n){e===t.itemInStage(i,n)&&(i.hover=!0)}))},handleButtonLeave:function(){"vertical"!==this.direction&&this.items.forEach((function(e){e.hover=!1}))},updateItems:function(){this.items=this.$children.filter((function(e){return"ElCarouselItem"===e.$options.name}))},resetItemPosition:function(e){var t=this;this.items.forEach((function(i,n){i.translateItem(n,t.activeIndex,e)}))},playSlides:function(){this.activeIndex0&&(e=this.items.indexOf(t[0]))}if(e=Number(e),isNaN(e)||e!==Math.floor(e))console.warn("[Element Warn][Carousel]index must be an integer.");else{var i=this.items.length,n=this.activeIndex;this.activeIndex=e<0?this.loop?i-1:0:e>=i?this.loop?0:i-1:e,n===this.activeIndex&&this.resetItemPosition(n),this.resetTimer()}},prev:function(){this.setActiveItem(this.activeIndex-1)},next:function(){this.setActiveItem(this.activeIndex+1)},handleIndicatorClick:function(e){this.activeIndex=e},handleIndicatorHover:function(e){"hover"===this.trigger&&e!==this.activeIndex&&(this.activeIndex=e)}},created:function(){var e=this;this.throttledArrowClick=Zo()(300,!0,(function(t){e.setActiveItem(t)})),this.throttledIndicatorHover=Zo()(300,(function(t){e.handleIndicatorHover(t)}))},mounted:function(){var e=this;this.updateItems(),this.$nextTick((function(){Object(Lt.addResizeListener)(e.$el,e.resetItemPosition),e.initialIndex=0&&(e.activeIndex=e.initialIndex),e.startTimer()}))},beforeDestroy:function(){this.$el&&Object(Lt.removeResizeListener)(this.$el,this.resetItemPosition),this.pauseTimer()}},Ko,[],!1,null,null,null);Qo.options.__file="packages/carousel/src/main.vue";var Jo=Qo.exports;Jo.install=function(e){e.component(Jo.name,Jo)};var el=Jo,tl={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};function il(e){var t=e.move,i=e.size,n=e.bar,r={},s="translate"+n.axis+"("+t+"%)";return r[n.size]=i,r.transform=s,r.msTransform=s,r.webkitTransform=s,r}var nl={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return tl[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,i=this.move,n=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+n.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:il({size:t,move:i,bar:n})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(fe.on)(document,"mousemove",this.mouseMoveDocumentHandler),Object(fe.on)(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var i=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(fe.off)(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(fe.off)(document,"mouseup",this.mouseUpDocumentHandler)}},rl={name:"ElScrollbar",components:{Bar:nl},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=Mi()(),i=this.wrapStyle;if(t){var n="-"+t+"px",r="margin-bottom: "+n+"; margin-right: "+n+";";Array.isArray(this.wrapStyle)?(i=Object(m.toObject)(this.wrapStyle)).marginRight=i.marginBottom=n:"string"==typeof this.wrapStyle?i+=r:i=r}var s=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),a=e("div",{ref:"wrap",style:i,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[s]]),o=void 0;return o=this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:i},[[s]])]:[a,e(nl,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(nl,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})],e("div",{class:"el-scrollbar"},o)},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,i=this.wrap;i&&(e=100*i.clientHeight/i.scrollHeight,t=100*i.clientWidth/i.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(Lt.addResizeListener)(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(Lt.removeResizeListener)(this.$refs.resize,this.update)},install:function(e){e.component(rl.name,rl)}},sl=rl,al=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"show",rawName:"v-show",value:e.ready,expression:"ready"}],staticClass:"el-carousel__item",class:{"is-active":e.active,"el-carousel__item--card":"card"===e.$parent.type,"is-in-stage":e.inStage,"is-hover":e.hover,"is-animating":e.animating},style:e.itemStyle,on:{click:e.handleItemClick}},["card"===e.$parent.type?i("div",{directives:[{name:"show",rawName:"v-show",value:!e.active,expression:"!active"}],staticClass:"el-carousel__mask"}):e._e(),e._t("default")],2)};al._withStripped=!0;var ol=r({name:"ElCarouselItem",props:{name:String,label:{type:[String,Number],default:""}},data:function(){return{hover:!1,translate:0,scale:1,active:!1,ready:!1,inStage:!1,animating:!1}},methods:{processIndex:function(e,t,i){return 0===t&&e===i-1?-1:t===i-1&&0===e?i:e=i/2?i+1:e>t+1&&e-t>=i/2?-2:e},calcCardTranslate:function(e,t){var i=this.$parent.$el.offsetWidth;return this.inStage?i*(1.17*(e-t)+1)/4:e2&&this.$parent.loop&&(e=this.processIndex(e,t,s)),"card"===n)"vertical"===r&&console.warn("[Element Warn][Carousel]vertical direction is not supported in card mode"),this.inStage=Math.round(Math.abs(e-t))<=1,this.active=e===t,this.translate=this.calcCardTranslate(e,t),this.scale=this.active?1:.83;else{this.active=e===t;var a="vertical"===r;this.translate=this.calcTranslate(e,t,a),this.scale=1}this.ready=!0},handleItemClick:function(){var e=this.$parent;if(e&&"card"===e.type){var t=e.items.indexOf(this);e.setActiveItem(t)}}},computed:{parentDirection:function(){return this.$parent.direction},itemStyle:function(){var e={transform:("vertical"===this.parentDirection?"translateY":"translateX")+"("+this.translate+"px) scale("+this.scale+")"};return Object(m.autoprefixer)(e)}},created:function(){this.$parent&&this.$parent.updateItems()},destroyed:function(){this.$parent&&this.$parent.updateItems()}},al,[],!1,null,null,null);ol.options.__file="packages/carousel/src/item.vue";var ll=ol.exports;ll.install=function(e){e.component(ll.name,ll)};var ul=ll,cl=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-collapse",attrs:{role:"tablist","aria-multiselectable":"true"}},[this._t("default")],2)};cl._withStripped=!0;var dl=r({name:"ElCollapse",componentName:"ElCollapse",props:{accordion:Boolean,value:{type:[Array,String,Number],default:function(){return[]}}},data:function(){return{activeNames:[].concat(this.value)}},provide:function(){return{collapse:this}},watch:{value:function(e){this.activeNames=[].concat(e)}},methods:{setActiveNames:function(e){e=[].concat(e);var t=this.accordion?e[0]:e;this.activeNames=e,this.$emit("input",t),this.$emit("change",t)},handleItemClick:function(e){if(this.accordion)this.setActiveNames(!this.activeNames[0]&&0!==this.activeNames[0]||this.activeNames[0]!==e.name?e.name:"");else{var t=this.activeNames.slice(0),i=t.indexOf(e.name);i>-1?t.splice(i,1):t.push(e.name),this.setActiveNames(t)}}},created:function(){this.$on("item-click",this.handleItemClick)}},cl,[],!1,null,null,null);dl.options.__file="packages/collapse/src/collapse.vue";var hl=dl.exports;hl.install=function(e){e.component(hl.name,hl)};var pl=hl,fl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-collapse-item",class:{"is-active":e.isActive,"is-disabled":e.disabled}},[i("div",{attrs:{role:"tab","aria-expanded":e.isActive,"aria-controls":"el-collapse-content-"+e.id,"aria-describedby":"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__header",class:{focusing:e.focusing,"is-active":e.isActive},attrs:{role:"button",id:"el-collapse-head-"+e.id,tabindex:e.disabled?void 0:0},on:{click:e.handleHeaderClick,keyup:function(t){return!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.stopPropagation(),e.handleEnterClick(t))},focus:e.handleFocus,blur:function(t){e.focusing=!1}}},[e._t("title",[e._v(e._s(e.title))]),i("i",{staticClass:"el-collapse-item__arrow el-icon-arrow-right",class:{"is-active":e.isActive}})],2)]),i("el-collapse-transition",[i("div",{directives:[{name:"show",rawName:"v-show",value:e.isActive,expression:"isActive"}],staticClass:"el-collapse-item__wrap",attrs:{role:"tabpanel","aria-hidden":!e.isActive,"aria-labelledby":"el-collapse-head-"+e.id,id:"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__content"},[e._t("default")],2)])])],1)};fl._withStripped=!0;var ml=r({name:"ElCollapseItem",componentName:"ElCollapseItem",mixins:[C.a],components:{ElCollapseTransition:be.a},data:function(){return{contentWrapStyle:{height:"auto",display:"block"},contentHeight:0,focusing:!1,isClick:!1,id:Object(m.generateId)()}},inject:["collapse"],props:{title:String,name:{type:[String,Number],default:function(){return this._uid}},disabled:Boolean},computed:{isActive:function(){return this.collapse.activeNames.indexOf(this.name)>-1}},methods:{handleFocus:function(){var e=this;setTimeout((function(){e.isClick?e.isClick=!1:e.focusing=!0}),50)},handleHeaderClick:function(){this.disabled||(this.dispatch("ElCollapse","item-click",this),this.focusing=!1,this.isClick=!0)},handleEnterClick:function(){this.dispatch("ElCollapse","item-click",this)}}},fl,[],!1,null,null,null);ml.options.__file="packages/collapse/src/collapse-item.vue";var vl=ml.exports;vl.install=function(e){e.component(vl.name,vl)};var gl=vl,_l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:function(){return e.toggleDropDownVisible(!1)},expression:"() => toggleDropDownVisible(false)"}],ref:"reference",class:["el-cascader",e.realSize&&"el-cascader--"+e.realSize,{"is-disabled":e.isDisabled}],on:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1},click:function(){return e.toggleDropDownVisible(!e.readonly||void 0)},keydown:e.handleKeyDown}},[i("el-input",{ref:"input",class:{"is-focus":e.dropDownVisible},attrs:{size:e.realSize,placeholder:e.placeholder,readonly:e.readonly,disabled:e.isDisabled,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.handleInput},model:{value:e.multiple?e.presentText:e.inputValue,callback:function(t){e.multiple?e.presentText:e.inputValue=t},expression:"multiple ? presentText : inputValue"}},[i("template",{slot:"suffix"},[e.clearBtnVisible?i("i",{key:"clear",staticClass:"el-input__icon el-icon-circle-close",on:{click:function(t){return t.stopPropagation(),e.handleClear(t)}}}):i("i",{key:"arrow-down",class:["el-input__icon","el-icon-arrow-down",e.dropDownVisible&&"is-reverse"],on:{click:function(t){t.stopPropagation(),e.toggleDropDownVisible()}}})])],2),e.multiple?i("div",{staticClass:"el-cascader__tags"},[e._l(e.presentTags,(function(t){return i("el-tag",{key:t.key,attrs:{type:"info",size:e.tagSize,hit:t.hitState,closable:t.closable,"disable-transitions":""},on:{close:function(i){e.deleteTag(t)}}},[i("span",[e._v(e._s(t.text))])])})),e.filterable&&!e.isDisabled?i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.inputValue,expression:"inputValue",modifiers:{trim:!0}}],staticClass:"el-cascader__search-input",attrs:{type:"text",placeholder:e.presentTags.length?"":e.placeholder},domProps:{value:e.inputValue},on:{input:[function(t){t.target.composing||(e.inputValue=t.target.value.trim())},function(t){return e.handleInput(e.inputValue,t)}],click:function(t){t.stopPropagation(),e.toggleDropDownVisible(!0)},keydown:function(t){return!("button"in t)&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:e.handleDelete(t)},blur:function(t){e.$forceUpdate()}}}):e._e()],2):e._e(),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.handleDropdownLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.dropDownVisible,expression:"dropDownVisible"}],ref:"popper",class:["el-popper","el-cascader__dropdown",e.popperClass]},[i("el-cascader-panel",{directives:[{name:"show",rawName:"v-show",value:!e.filtering,expression:"!filtering"}],ref:"panel",attrs:{options:e.options,props:e.config,border:!1,"render-label":e.$scopedSlots.default},on:{"expand-change":e.handleExpandChange,close:function(t){e.toggleDropDownVisible(!1)}},model:{value:e.checkedValue,callback:function(t){e.checkedValue=t},expression:"checkedValue"}}),e.filterable?i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.filtering,expression:"filtering"}],ref:"suggestionPanel",staticClass:"el-cascader__suggestion-panel",attrs:{tag:"ul","view-class":"el-cascader__suggestion-list"},nativeOn:{keydown:function(t){return e.handleSuggestionKeyDown(t)}}},[e.suggestions.length?e._l(e.suggestions,(function(t,n){return i("li",{key:t.uid,class:["el-cascader__suggestion-item",t.checked&&"is-checked"],attrs:{tabindex:-1},on:{click:function(t){e.handleSuggestionClick(n)}}},[i("span",[e._v(e._s(t.text))]),t.checked?i("i",{staticClass:"el-icon-check"}):e._e()])})):e._t("empty",[i("li",{staticClass:"el-cascader__empty-text"},[e._v(e._s(e.t("el.cascader.noMatch")))])])],2):e._e()],1)])],1)};_l._withStripped=!0;var bl=i(42),yl=i.n(bl),xl=i(34),kl=i.n(xl),wl=kl.a.keys,Cl={expandTrigger:{newProp:"expandTrigger",type:String},changeOnSelect:{newProp:"checkStrictly",type:Boolean},hoverThreshold:{newProp:"hoverThreshold",type:Number}},Sl={props:{placement:{type:String,default:"bottom-start"},appendToBody:A.a.props.appendToBody,visibleArrow:{type:Boolean,default:!0},arrowOffset:A.a.props.arrowOffset,offset:A.a.props.offset,boundariesPadding:A.a.props.boundariesPadding,popperOptions:A.a.props.popperOptions},methods:A.a.methods,data:A.a.data,beforeDestroy:A.a.beforeDestroy},Ol={medium:36,small:32,mini:28},Dl=r({name:"ElCascader",directives:{Clickoutside:j.a},mixins:[Sl,C.a,f.a,k.a],inject:{elForm:{default:""},elFormItem:{default:""}},components:{ElInput:h.a,ElTag:Nt.a,ElScrollbar:L.a,ElCascaderPanel:yl.a},props:{value:{},options:Array,props:Object,size:String,placeholder:{type:String,default:function(){return Object(Ir.t)("el.cascader.placeholder")}},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:Function,separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,debounce:{type:Number,default:300},beforeFilter:{type:Function,default:function(){return function(){}}},popperClass:String},data:function(){return{dropDownVisible:!1,checkedValue:this.value,inputHover:!1,inputValue:null,presentText:null,presentTags:[],checkedNodes:[],filtering:!1,suggestions:[],inputInitialHeight:0,pressDeleteCount:0}},computed:{realSize:function(){var e=(this.elFormItem||{}).elFormItemSize;return this.size||e||(this.$ELEMENT||{}).size},tagSize:function(){return["small","mini"].indexOf(this.realSize)>-1?"mini":"small"},isDisabled:function(){return this.disabled||(this.elForm||{}).disabled},config:function(){var e=this.props||{},t=this.$attrs;return Object.keys(Cl).forEach((function(i){var n=Cl[i],r=n.newProp,s=n.type,a=t[i]||t[Object(m.kebabCase)(i)];Object(He.isDef)(i)&&!Object(He.isDef)(e[r])&&(s===Boolean&&""===a&&(a=!0),e[r]=a)})),e},multiple:function(){return this.config.multiple},leafOnly:function(){return!this.config.checkStrictly},readonly:function(){return!this.filterable||this.multiple},clearBtnVisible:function(){return!(!this.clearable||this.isDisabled||this.filtering||!this.inputHover)&&(this.multiple?!!this.checkedNodes.filter((function(e){return!e.isDisabled})).length:!!this.presentText)},panel:function(){return this.$refs.panel}},watch:{disabled:function(){this.computePresentContent()},value:function(e){Object(m.isEqual)(e,this.checkedValue)||(this.checkedValue=e,this.computePresentContent())},checkedValue:function(e){var t=this.value,i=this.dropDownVisible,n=this.config,r=n.checkStrictly,s=n.multiple;Object(m.isEqual)(e,t)&&!Object(xo.isUndefined)(t)||(this.computePresentContent(),s||r||!i||this.toggleDropDownVisible(!1),this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",[e]))},options:{handler:function(){this.$nextTick(this.computePresentContent)},deep:!0},presentText:function(e){this.inputValue=e},presentTags:function(e,t){this.multiple&&(e.length||t.length)&&this.$nextTick(this.updateStyle)},filtering:function(e){this.$nextTick(this.updatePopper)}},mounted:function(){var e=this,t=this.$refs.input;t&&t.$el&&(this.inputInitialHeight=t.$el.offsetHeight||Ol[this.realSize]||40),this.isEmptyValue(this.value)||this.computePresentContent(),this.filterHandler=$()(this.debounce,(function(){var t=e.inputValue;if(t){var i=e.beforeFilter(t);i&&i.then?i.then(e.getSuggestions):!1!==i?e.getSuggestions():e.filtering=!1}else e.filtering=!1})),Object(Lt.addResizeListener)(this.$el,this.updateStyle)},beforeDestroy:function(){Object(Lt.removeResizeListener)(this.$el,this.updateStyle)},methods:{getMigratingConfig:function(){return{props:{"expand-trigger":"expand-trigger is removed, use `props.expandTrigger` instead.","change-on-select":"change-on-select is removed, use `props.checkStrictly` instead.","hover-threshold":"hover-threshold is removed, use `props.hoverThreshold` instead"},events:{"active-item-change":"active-item-change is renamed to expand-change"}}},toggleDropDownVisible:function(e){var t=this;if(!this.isDisabled){var i=this.dropDownVisible,n=this.$refs.input;(e=Object(He.isDef)(e)?e:!i)!==i&&(this.dropDownVisible=e,e&&this.$nextTick((function(){t.updatePopper(),t.panel.scrollIntoView()})),n.$refs.input.setAttribute("aria-expanded",e),this.$emit("visible-change",e))}},handleDropdownLeave:function(){this.filtering=!1,this.inputValue=this.presentText,this.doDestroy()},handleKeyDown:function(e){switch(e.keyCode){case wl.enter:this.toggleDropDownVisible();break;case wl.down:this.toggleDropDownVisible(!0),this.focusFirstNode(),e.preventDefault();break;case wl.esc:case wl.tab:this.toggleDropDownVisible(!1)}},handleFocus:function(e){this.$emit("focus",e)},handleBlur:function(e){this.$emit("blur",e)},handleInput:function(e,t){!this.dropDownVisible&&this.toggleDropDownVisible(!0),t&&t.isComposing||(e?this.filterHandler():this.filtering=!1)},handleClear:function(){this.presentText="",this.panel.clearCheckedNodes()},handleExpandChange:function(e){this.$nextTick(this.updatePopper.bind(this)),this.$emit("expand-change",e),this.$emit("active-item-change",e)},focusFirstNode:function(){var e=this;this.$nextTick((function(){var t=e.filtering,i=e.$refs,n=i.popper,r=i.suggestionPanel,s=null;t&&r?s=r.$el.querySelector(".el-cascader__suggestion-item"):s=n.querySelector(".el-cascader-menu").querySelector('.el-cascader-node[tabindex="-1"]');s&&(s.focus(),!t&&s.click())}))},computePresentContent:function(){var e=this;this.$nextTick((function(){e.config.multiple?(e.computePresentTags(),e.presentText=e.presentTags.length?" ":null):e.computePresentText()}))},isEmptyValue:function(e){var t=this.multiple,i=this.panel.config.emitPath;return!(!t&&!i)&&Object(m.isEmpty)(e)},computePresentText:function(){var e=this.checkedValue,t=this.config;if(!this.isEmptyValue(e)){var i=this.panel.getNodeByValue(e);if(i&&(t.checkStrictly||i.isLeaf))return void(this.presentText=i.getText(this.showAllLevels,this.separator))}this.presentText=null},computePresentTags:function(){var e=this.isDisabled,t=this.leafOnly,i=this.showAllLevels,n=this.separator,r=this.collapseTags,s=this.getCheckedNodes(t),a=[],o=function(t){return{node:t,key:t.uid,text:t.getText(i,n),hitState:!1,closable:!e&&!t.isDisabled}};if(s.length){var l=s[0],u=s.slice(1),c=u.length;a.push(o(l)),c&&(r?a.push({key:-1,text:"+ "+c,closable:!1}):u.forEach((function(e){return a.push(o(e))})))}this.checkedNodes=s,this.presentTags=a},getSuggestions:function(){var e=this,t=this.filterMethod;Object(xo.isFunction)(t)||(t=function(e,t){return e.text.includes(t)});var i=this.panel.getFlattedNodes(this.leafOnly).filter((function(i){return!i.isDisabled&&(i.text=i.getText(e.showAllLevels,e.separator)||"",t(i,e.inputValue))}));this.multiple?this.presentTags.forEach((function(e){e.hitState=!1})):i.forEach((function(t){t.checked=Object(m.isEqual)(e.checkedValue,t.getValueByOption())})),this.filtering=!0,this.suggestions=i,this.$nextTick(this.updatePopper)},handleSuggestionKeyDown:function(e){var t=e.keyCode,i=e.target;switch(t){case wl.enter:i.click();break;case wl.up:var n=i.previousElementSibling;n&&n.focus();break;case wl.down:var r=i.nextElementSibling;r&&r.focus();break;case wl.esc:case wl.tab:this.toggleDropDownVisible(!1)}},handleDelete:function(){var e=this.inputValue,t=this.pressDeleteCount,i=this.presentTags,n=i[i.length-1];this.pressDeleteCount=e?0:t+1,n&&this.pressDeleteCount&&(n.hitState?this.deleteTag(n):n.hitState=!0)},handleSuggestionClick:function(e){var t=this.multiple,i=this.suggestions[e];if(t){var n=i.checked;i.doCheck(!n),this.panel.calculateMultiCheckedValue()}else this.checkedValue=i.getValueByOption(),this.toggleDropDownVisible(!1)},deleteTag:function(e){var t=this.checkedValue,i=e.node.getValueByOption(),n=t.find((function(e){return Object(m.isEqual)(e,i)}));this.checkedValue=t.filter((function(e){return!Object(m.isEqual)(e,i)})),this.$emit("remove-tag",n)},updateStyle:function(){var e=this.$el,t=this.inputInitialHeight;if(!this.$isServer&&e){var i=this.$refs.suggestionPanel,n=e.querySelector(".el-input__inner");if(n){var r=e.querySelector(".el-cascader__tags"),s=null;if(i&&(s=i.$el))s.querySelector(".el-cascader__suggestion-list").style.minWidth=n.offsetWidth+"px";if(r){var a=Math.round(r.getBoundingClientRect().height),o=Math.max(a+6,t)+"px";n.style.height=o,this.dropDownVisible&&this.updatePopper()}}}},getCheckedNodes:function(e){return this.panel.getCheckedNodes(e)}}},_l,[],!1,null,null,null);Dl.options.__file="packages/cascader/src/cascader.vue";var El=Dl.exports;El.install=function(e){e.component(El.name,El)};var Tl=El,$l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.hide,expression:"hide"}],class:["el-color-picker",e.colorDisabled?"is-disabled":"",e.colorSize?"el-color-picker--"+e.colorSize:""]},[e.colorDisabled?i("div",{staticClass:"el-color-picker__mask"}):e._e(),i("div",{staticClass:"el-color-picker__trigger",on:{click:e.handleTrigger}},[i("span",{staticClass:"el-color-picker__color",class:{"is-alpha":e.showAlpha}},[i("span",{staticClass:"el-color-picker__color-inner",style:{backgroundColor:e.displayedColor}}),e.value||e.showPanelColor?e._e():i("span",{staticClass:"el-color-picker__empty el-icon-close"})]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.value||e.showPanelColor,expression:"value || showPanelColor"}],staticClass:"el-color-picker__icon el-icon-arrow-down"})]),i("picker-dropdown",{ref:"dropdown",class:["el-color-picker__panel",e.popperClass||""],attrs:{color:e.color,"show-alpha":e.showAlpha,predefine:e.predefine},on:{pick:e.confirmValue,clear:e.clearValue},model:{value:e.showPicker,callback:function(t){e.showPicker=t},expression:"showPicker"}})],1)};$l._withStripped=!0;var Pl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var jl=function(e,t,i){return[e,t*i/((e=(2-t)*i)<1?e:2-e)||0,e/2]},Ml=function(e,t){var i;"string"==typeof(i=e)&&-1!==i.indexOf(".")&&1===parseFloat(i)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},Il={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},Al={A:10,B:11,C:12,D:13,E:14,F:15},Nl=function(e){return 2===e.length?16*(Al[e[0].toUpperCase()]||+e[0])+(Al[e[1].toUpperCase()]||+e[1]):Al[e[1].toUpperCase()]||+e[1]},Ll=function(e,t,i){e=Ml(e,255),t=Ml(t,255),i=Ml(i,255);var n,r=Math.max(e,t,i),s=Math.min(e,t,i),a=void 0,o=r,l=r-s;if(n=0===r?0:l/r,r===s)a=0;else{switch(r){case e:a=(t-i)/l+(t2?parseFloat(e):parseInt(e,10)}));if(4===n.length?this._alpha=Math.floor(100*parseFloat(n[3])):3===n.length&&(this._alpha=100),n.length>=3){var r=function(e,t,i){i/=100;var n=t/=100,r=Math.max(i,.01);return t*=(i*=2)<=1?i:2-i,n*=r<=1?r:2-r,{h:e,s:100*(0===i?2*n/(r+n):2*t/(i+t)),v:100*((i+t)/2)}}(n[0],n[1],n[2]);i(r.h,r.s,r.v)}}else if(-1!==e.indexOf("hsv")){var s=e.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter((function(e){return""!==e})).map((function(e,t){return t>2?parseFloat(e):parseInt(e,10)}));4===s.length?this._alpha=Math.floor(100*parseFloat(s[3])):3===s.length&&(this._alpha=100),s.length>=3&&i(s[0],s[1],s[2])}else if(-1!==e.indexOf("rgb")){var a=e.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter((function(e){return""!==e})).map((function(e,t){return t>2?parseFloat(e):parseInt(e,10)}));if(4===a.length?this._alpha=Math.floor(100*parseFloat(a[3])):3===a.length&&(this._alpha=100),a.length>=3){var o=Ll(a[0],a[1],a[2]);i(o.h,o.s,o.v)}}else if(-1!==e.indexOf("#")){var l=e.replace("#","").trim();if(!/^(?:[0-9a-fA-F]{3}){1,2}|[0-9a-fA-F]{8}$/.test(l))return;var u=void 0,c=void 0,d=void 0;3===l.length?(u=Nl(l[0]+l[0]),c=Nl(l[1]+l[1]),d=Nl(l[2]+l[2])):6!==l.length&&8!==l.length||(u=Nl(l.substring(0,2)),c=Nl(l.substring(2,4)),d=Nl(l.substring(4,6))),8===l.length?this._alpha=Math.floor(Nl(l.substring(6))/255*100):3!==l.length&&6!==l.length||(this._alpha=100);var h=Ll(u,c,d);i(h.h,h.s,h.v)}},e.prototype.compare=function(e){return Math.abs(e._hue-this._hue)<2&&Math.abs(e._saturation-this._saturation)<1&&Math.abs(e._value-this._value)<1&&Math.abs(e._alpha-this._alpha)<1},e.prototype.doOnChange=function(){var e=this._hue,t=this._saturation,i=this._value,n=this._alpha,r=this.format;if(this.enableAlpha)switch(r){case"hsl":var s=jl(e,t/100,i/100);this.value="hsla("+e+", "+Math.round(100*s[1])+"%, "+Math.round(100*s[2])+"%, "+n/100+")";break;case"hsv":this.value="hsva("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%, "+n/100+")";break;default:var a=Fl(e,t,i),o=a.r,l=a.g,u=a.b;this.value="rgba("+o+", "+l+", "+u+", "+n/100+")"}else switch(r){case"hsl":var c=jl(e,t/100,i/100);this.value="hsl("+e+", "+Math.round(100*c[1])+"%, "+Math.round(100*c[2])+"%)";break;case"hsv":this.value="hsv("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%)";break;case"rgb":var d=Fl(e,t,i),h=d.r,p=d.g,f=d.b;this.value="rgb("+h+", "+p+", "+f+")";break;default:this.value=function(e){var t=e.r,i=e.g,n=e.b,r=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),i=e%16;return""+(Il[t]||t)+(Il[i]||i)};return isNaN(t)||isNaN(i)||isNaN(n)?"":"#"+r(t)+r(i)+r(n)}(Fl(e,t,i))}},e}(),zl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-color-dropdown"},[i("div",{staticClass:"el-color-dropdown__main-wrapper"},[i("hue-slider",{ref:"hue",staticStyle:{float:"right"},attrs:{color:e.color,vertical:""}}),i("sv-panel",{ref:"sl",attrs:{color:e.color}})],1),e.showAlpha?i("alpha-slider",{ref:"alpha",attrs:{color:e.color}}):e._e(),e.predefine?i("predefine",{attrs:{color:e.color,colors:e.predefine}}):e._e(),i("div",{staticClass:"el-color-dropdown__btns"},[i("span",{staticClass:"el-color-dropdown__value"},[i("el-input",{attrs:{"validate-event":!1,size:"mini"},on:{blur:e.handleConfirm},nativeOn:{keyup:function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleConfirm(t)}},model:{value:e.customInput,callback:function(t){e.customInput=t},expression:"customInput"}})],1),i("el-button",{staticClass:"el-color-dropdown__link-btn",attrs:{size:"mini",type:"text"},on:{click:function(t){e.$emit("clear")}}},[e._v("\n "+e._s(e.t("el.colorpicker.clear"))+"\n ")]),i("el-button",{staticClass:"el-color-dropdown__btn",attrs:{plain:"",size:"mini"},on:{click:e.confirmValue}},[e._v("\n "+e._s(e.t("el.colorpicker.confirm"))+"\n ")])],1)],1)])};zl._withStripped=!0;var Rl=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-svpanel",style:{backgroundColor:this.background}},[t("div",{staticClass:"el-color-svpanel__white"}),t("div",{staticClass:"el-color-svpanel__black"}),t("div",{staticClass:"el-color-svpanel__cursor",style:{top:this.cursorTop+"px",left:this.cursorLeft+"px"}},[t("div")])])};Rl._withStripped=!0;var Bl=!1,Hl=function(e,t){if(!di.a.prototype.$isServer){var i=function(e){t.drag&&t.drag(e)},n=function e(n){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e),document.onselectstart=null,document.ondragstart=null,Bl=!1,t.end&&t.end(n)};e.addEventListener("mousedown",(function(e){Bl||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},document.addEventListener("mousemove",i),document.addEventListener("mouseup",n),Bl=!0,t.start&&t.start(e))}))}},Wl=r({name:"el-sl-panel",props:{color:{required:!0}},computed:{colorValue:function(){return{hue:this.color.get("hue"),value:this.color.get("value")}}},watch:{colorValue:function(){this.update()}},methods:{update:function(){var e=this.color.get("saturation"),t=this.color.get("value"),i=this.$el,n=i.clientWidth,r=i.clientHeight;this.cursorLeft=e*n/100,this.cursorTop=(100-t)*r/100,this.background="hsl("+this.color.get("hue")+", 100%, 50%)"},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=e.clientX-t.left,n=e.clientY-t.top;i=Math.max(0,i),i=Math.min(i,t.width),n=Math.max(0,n),n=Math.min(n,t.height),this.cursorLeft=i,this.cursorTop=n,this.color.set({saturation:i/t.width*100,value:100-n/t.height*100})}},mounted:function(){var e=this;Hl(this.$el,{drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}}),this.update()},data:function(){return{cursorTop:0,cursorLeft:0,background:"hsl(0, 100%, 50%)"}}},Rl,[],!1,null,null,null);Wl.options.__file="packages/color-picker/src/components/sv-panel.vue";var ql=Wl.exports,Ul=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-hue-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-hue-slider__bar",on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-hue-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Ul._withStripped=!0;var Gl=r({name:"el-color-hue-slider",props:{color:{required:!0},vertical:Boolean},data:function(){return{thumbLeft:0,thumbTop:0}},computed:{hueValue:function(){return this.color.get("hue")}},watch:{hueValue:function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb,n=void 0;if(this.vertical){var r=e.clientY-t.top;r=Math.min(r,t.height-i.offsetHeight/2),r=Math.max(i.offsetHeight/2,r),n=Math.round((r-i.offsetHeight/2)/(t.height-i.offsetHeight)*360)}else{var s=e.clientX-t.left;s=Math.min(s,t.width-i.offsetWidth/2),s=Math.max(i.offsetWidth/2,s),n=Math.round((s-i.offsetWidth/2)/(t.width-i.offsetWidth)*360)}this.color.set("hue",n)},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/360)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/360)},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop()}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Hl(i,r),Hl(n,r),this.update()}},Ul,[],!1,null,null,null);Gl.options.__file="packages/color-picker/src/components/hue-slider.vue";var Yl=Gl.exports,Kl=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-alpha-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-alpha-slider__bar",style:{background:this.background},on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-alpha-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Kl._withStripped=!0;var Xl=r({name:"el-color-alpha-slider",props:{color:{required:!0},vertical:Boolean},watch:{"color._alpha":function(){this.update()},"color.value":function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb;if(this.vertical){var n=e.clientY-t.top;n=Math.max(i.offsetHeight/2,n),n=Math.min(n,t.height-i.offsetHeight/2),this.color.set("alpha",Math.round((n-i.offsetHeight/2)/(t.height-i.offsetHeight)*100))}else{var r=e.clientX-t.left;r=Math.max(i.offsetWidth/2,r),r=Math.min(r,t.width-i.offsetWidth/2),this.color.set("alpha",Math.round((r-i.offsetWidth/2)/(t.width-i.offsetWidth)*100))}},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/100)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/100)},getBackground:function(){if(this.color&&this.color.value){var e=this.color.toRgb(),t=e.r,i=e.g,n=e.b;return"linear-gradient(to right, rgba("+t+", "+i+", "+n+", 0) 0%, rgba("+t+", "+i+", "+n+", 1) 100%)"}return null},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop(),this.background=this.getBackground()}},data:function(){return{thumbLeft:0,thumbTop:0,background:null}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Hl(i,r),Hl(n,r),this.update()}},Kl,[],!1,null,null,null);Xl.options.__file="packages/color-picker/src/components/alpha-slider.vue";var Zl=Xl.exports,Ql=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-color-predefine"},[i("div",{staticClass:"el-color-predefine__colors"},e._l(e.rgbaColors,(function(t,n){return i("div",{key:e.colors[n],staticClass:"el-color-predefine__color-selector",class:{selected:t.selected,"is-alpha":t._alpha<100},on:{click:function(t){e.handleSelect(n)}}},[i("div",{style:{"background-color":t.value}})])})),0)])};Ql._withStripped=!0;var Jl=r({props:{colors:{type:Array,required:!0},color:{required:!0}},data:function(){return{rgbaColors:this.parseColors(this.colors,this.color)}},methods:{handleSelect:function(e){this.color.fromString(this.colors[e])},parseColors:function(e,t){return e.map((function(e){var i=new Vl;return i.enableAlpha=!0,i.format="rgba",i.fromString(e),i.selected=i.value===t.value,i}))}},watch:{"$parent.currentColor":function(e){var t=new Vl;t.fromString(e),this.rgbaColors.forEach((function(e){e.selected=t.compare(e)}))},colors:function(e){this.rgbaColors=this.parseColors(e,this.color)},color:function(e){this.rgbaColors=this.parseColors(this.colors,e)}}},Ql,[],!1,null,null,null);Jl.options.__file="packages/color-picker/src/components/predefine.vue";var eu=Jl.exports,tu=r({name:"el-color-picker-dropdown",mixins:[A.a,f.a],components:{SvPanel:ql,HueSlider:Yl,AlphaSlider:Zl,ElInput:h.a,ElButton:U.a,Predefine:eu},props:{color:{required:!0},showAlpha:Boolean,predefine:Array},data:function(){return{customInput:""}},computed:{currentColor:function(){var e=this.$parent;return e.value||e.showPanelColor?e.color.value:""}},methods:{confirmValue:function(){this.$emit("pick")},handleConfirm:function(){this.color.fromString(this.customInput)}},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$el},watch:{showPopper:function(e){var t=this;!0===e&&this.$nextTick((function(){var e=t.$refs,i=e.sl,n=e.hue,r=e.alpha;i&&i.update(),n&&n.update(),r&&r.update()}))},currentColor:{immediate:!0,handler:function(e){this.customInput=e}}}},zl,[],!1,null,null,null);tu.options.__file="packages/color-picker/src/components/picker-dropdown.vue";var iu=tu.exports,nu=r({name:"ElColorPicker",mixins:[C.a],props:{value:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:String,popperClass:String,predefine:Array},inject:{elForm:{default:""},elFormItem:{default:""}},directives:{Clickoutside:j.a},computed:{displayedColor:function(){return this.value||this.showPanelColor?this.displayedRgb(this.color,this.showAlpha):"transparent"},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},colorSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},colorDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){e?e&&e!==this.color.value&&this.color.fromString(e):this.showPanelColor=!1},color:{deep:!0,handler:function(){this.showPanelColor=!0}},displayedColor:function(e){if(this.showPicker){var t=new Vl({enableAlpha:this.showAlpha,format:this.colorFormat});t.fromString(this.value),e!==this.displayedRgb(t,this.showAlpha)&&this.$emit("active-change",e)}}},methods:{handleTrigger:function(){this.colorDisabled||(this.showPicker=!this.showPicker)},confirmValue:function(){var e=this.color.value;this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",e),this.showPicker=!1},clearValue:function(){this.$emit("input",null),this.$emit("change",null),null!==this.value&&this.dispatch("ElFormItem","el.form.change",null),this.showPanelColor=!1,this.showPicker=!1,this.resetColor()},hide:function(){this.showPicker=!1,this.resetColor()},resetColor:function(){var e=this;this.$nextTick((function(t){e.value?e.color.fromString(e.value):e.showPanelColor=!1}))},displayedRgb:function(e,t){if(!(e instanceof Vl))throw Error("color should be instance of Color Class");var i=e.toRgb(),n=i.r,r=i.g,s=i.b;return t?"rgba("+n+", "+r+", "+s+", "+e.get("alpha")/100+")":"rgb("+n+", "+r+", "+s+")"}},mounted:function(){var e=this.value;e&&this.color.fromString(e),this.popperElm=this.$refs.dropdown.$el},data:function(){return{color:new Vl({enableAlpha:this.showAlpha,format:this.colorFormat}),showPicker:!1,showPanelColor:!1}},components:{PickerDropdown:iu}},$l,[],!1,null,null,null);nu.options.__file="packages/color-picker/src/main.vue";var ru=nu.exports;ru.install=function(e){e.component(ru.name,ru)};var su=ru,au=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer"},[i("transfer-panel",e._b({ref:"leftPanel",attrs:{data:e.sourceData,title:e.titles[0]||e.t("el.transfer.titles.0"),"default-checked":e.leftDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onSourceCheckedChange}},"transfer-panel",e.$props,!1),[e._t("left-footer")],2),i("div",{staticClass:"el-transfer__buttons"},[i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.rightChecked.length},nativeOn:{click:function(t){return e.addToLeft(t)}}},[i("i",{staticClass:"el-icon-arrow-left"}),void 0!==e.buttonTexts[0]?i("span",[e._v(e._s(e.buttonTexts[0]))]):e._e()]),i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.leftChecked.length},nativeOn:{click:function(t){return e.addToRight(t)}}},[void 0!==e.buttonTexts[1]?i("span",[e._v(e._s(e.buttonTexts[1]))]):e._e(),i("i",{staticClass:"el-icon-arrow-right"})])],1),i("transfer-panel",e._b({ref:"rightPanel",attrs:{data:e.targetData,title:e.titles[1]||e.t("el.transfer.titles.1"),"default-checked":e.rightDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onTargetCheckedChange}},"transfer-panel",e.$props,!1),[e._t("right-footer")],2)],1)};au._withStripped=!0;var ou=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer-panel"},[i("p",{staticClass:"el-transfer-panel__header"},[i("el-checkbox",{attrs:{indeterminate:e.isIndeterminate},on:{change:e.handleAllCheckedChange},model:{value:e.allChecked,callback:function(t){e.allChecked=t},expression:"allChecked"}},[e._v("\n "+e._s(e.title)+"\n "),i("span",[e._v(e._s(e.checkedSummary))])])],1),i("div",{class:["el-transfer-panel__body",e.hasFooter?"is-with-footer":""]},[e.filterable?i("el-input",{staticClass:"el-transfer-panel__filter",attrs:{size:"small",placeholder:e.placeholder},nativeOn:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1}},model:{value:e.query,callback:function(t){e.query=t},expression:"query"}},[i("i",{class:["el-input__icon","el-icon-"+e.inputIcon],attrs:{slot:"prefix"},on:{click:e.clearQuery},slot:"prefix"})]):e._e(),i("el-checkbox-group",{directives:[{name:"show",rawName:"v-show",value:!e.hasNoMatch&&e.data.length>0,expression:"!hasNoMatch && data.length > 0"}],staticClass:"el-transfer-panel__list",class:{"is-filterable":e.filterable},model:{value:e.checked,callback:function(t){e.checked=t},expression:"checked"}},e._l(e.filteredData,(function(t){return i("el-checkbox",{key:t[e.keyProp],staticClass:"el-transfer-panel__item",attrs:{label:t[e.keyProp],disabled:t[e.disabledProp]}},[i("option-content",{attrs:{option:t}})],1)})),1),i("p",{directives:[{name:"show",rawName:"v-show",value:e.hasNoMatch,expression:"hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noMatch")))]),i("p",{directives:[{name:"show",rawName:"v-show",value:0===e.data.length&&!e.hasNoMatch,expression:"data.length === 0 && !hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noData")))])],1),e.hasFooter?i("p",{staticClass:"el-transfer-panel__footer"},[e._t("default")],2):e._e()])};ou._withStripped=!0;var lu=r({mixins:[f.a],name:"ElTransferPanel",componentName:"ElTransferPanel",components:{ElCheckboxGroup:Wi.a,ElCheckbox:ri.a,ElInput:h.a,OptionContent:{props:{option:Object},render:function(e){var t=function e(t){return"ElTransferPanel"===t.$options.componentName?t:t.$parent?e(t.$parent):t}(this),i=t.$parent||t;return t.renderContent?t.renderContent(e,this.option):i.$scopedSlots.default?i.$scopedSlots.default({option:this.option}):e("span",[this.option[t.labelProp]||this.option[t.keyProp]])}}},props:{data:{type:Array,default:function(){return[]}},renderContent:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},data:function(){return{checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}},watch:{checked:function(e,t){if(this.updateAllChecked(),this.checkChangeByUser){var i=e.concat(t).filter((function(i){return-1===e.indexOf(i)||-1===t.indexOf(i)}));this.$emit("checked-change",e,i)}else this.$emit("checked-change",e),this.checkChangeByUser=!0},data:function(){var e=this,t=[],i=this.filteredData.map((function(t){return t[e.keyProp]}));this.checked.forEach((function(e){i.indexOf(e)>-1&&t.push(e)})),this.checkChangeByUser=!1,this.checked=t},checkableData:function(){this.updateAllChecked()},defaultChecked:{immediate:!0,handler:function(e,t){var i=this;if(!t||e.length!==t.length||!e.every((function(e){return t.indexOf(e)>-1}))){var n=[],r=this.checkableData.map((function(e){return e[i.keyProp]}));e.forEach((function(e){r.indexOf(e)>-1&&n.push(e)})),this.checkChangeByUser=!1,this.checked=n}}}},computed:{filteredData:function(){var e=this;return this.data.filter((function(t){return"function"==typeof e.filterMethod?e.filterMethod(e.query,t):(t[e.labelProp]||t[e.keyProp].toString()).toLowerCase().indexOf(e.query.toLowerCase())>-1}))},checkableData:function(){var e=this;return this.filteredData.filter((function(t){return!t[e.disabledProp]}))},checkedSummary:function(){var e=this.checked.length,t=this.data.length,i=this.format,n=i.noChecked,r=i.hasChecked;return n&&r?e>0?r.replace(/\${checked}/g,e).replace(/\${total}/g,t):n.replace(/\${total}/g,t):e+"/"+t},isIndeterminate:function(){var e=this.checked.length;return e>0&&e0&&0===this.filteredData.length},inputIcon:function(){return this.query.length>0&&this.inputHover?"circle-close":"search"},labelProp:function(){return this.props.label||"label"},keyProp:function(){return this.props.key||"key"},disabledProp:function(){return this.props.disabled||"disabled"},hasFooter:function(){return!!this.$slots.default}},methods:{updateAllChecked:function(){var e=this,t=this.checkableData.map((function(t){return t[e.keyProp]}));this.allChecked=t.length>0&&t.every((function(t){return e.checked.indexOf(t)>-1}))},handleAllCheckedChange:function(e){var t=this;this.checked=e?this.checkableData.map((function(e){return e[t.keyProp]})):[]},clearQuery:function(){"circle-close"===this.inputIcon&&(this.query="")}}},ou,[],!1,null,null,null);lu.options.__file="packages/transfer/src/transfer-panel.vue";var uu=lu.exports,cu=r({name:"ElTransfer",mixins:[C.a,f.a,k.a],components:{TransferPanel:uu,ElButton:U.a},props:{data:{type:Array,default:function(){return[]}},titles:{type:Array,default:function(){return[]}},buttonTexts:{type:Array,default:function(){return[]}},filterPlaceholder:{type:String,default:""},filterMethod:Function,leftDefaultChecked:{type:Array,default:function(){return[]}},rightDefaultChecked:{type:Array,default:function(){return[]}},renderContent:Function,value:{type:Array,default:function(){return[]}},format:{type:Object,default:function(){return{}}},filterable:Boolean,props:{type:Object,default:function(){return{label:"label",key:"key",disabled:"disabled"}}},targetOrder:{type:String,default:"original"}},data:function(){return{leftChecked:[],rightChecked:[]}},computed:{dataObj:function(){var e=this.props.key;return this.data.reduce((function(t,i){return(t[i[e]]=i)&&t}),{})},sourceData:function(){var e=this;return this.data.filter((function(t){return-1===e.value.indexOf(t[e.props.key])}))},targetData:function(){var e=this;return"original"===this.targetOrder?this.data.filter((function(t){return e.value.indexOf(t[e.props.key])>-1})):this.value.reduce((function(t,i){var n=e.dataObj[i];return n&&t.push(n),t}),[])},hasButtonTexts:function(){return 2===this.buttonTexts.length}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}},methods:{getMigratingConfig:function(){return{props:{"footer-format":"footer-format is renamed to format."}}},onSourceCheckedChange:function(e,t){this.leftChecked=e,void 0!==t&&this.$emit("left-check-change",e,t)},onTargetCheckedChange:function(e,t){this.rightChecked=e,void 0!==t&&this.$emit("right-check-change",e,t)},addToLeft:function(){var e=this.value.slice();this.rightChecked.forEach((function(t){var i=e.indexOf(t);i>-1&&e.splice(i,1)})),this.$emit("input",e),this.$emit("change",e,"left",this.rightChecked)},addToRight:function(){var e=this,t=this.value.slice(),i=[],n=this.props.key;this.data.forEach((function(t){var r=t[n];e.leftChecked.indexOf(r)>-1&&-1===e.value.indexOf(r)&&i.push(r)})),t="unshift"===this.targetOrder?i.concat(t):t.concat(i),this.$emit("input",t),this.$emit("change",t,"right",this.leftChecked)},clearQuery:function(e){"left"===e?this.$refs.leftPanel.query="":"right"===e&&(this.$refs.rightPanel.query="")}}},au,[],!1,null,null,null);cu.options.__file="packages/transfer/src/main.vue";var du=cu.exports;du.install=function(e){e.component(du.name,du)};var hu=du,pu=function(){var e=this.$createElement;return(this._self._c||e)("section",{staticClass:"el-container",class:{"is-vertical":this.isVertical}},[this._t("default")],2)};pu._withStripped=!0;var fu=r({name:"ElContainer",componentName:"ElContainer",props:{direction:String},computed:{isVertical:function(){return"vertical"===this.direction||"horizontal"!==this.direction&&(!(!this.$slots||!this.$slots.default)&&this.$slots.default.some((function(e){var t=e.componentOptions&&e.componentOptions.tag;return"el-header"===t||"el-footer"===t})))}}},pu,[],!1,null,null,null);fu.options.__file="packages/container/src/main.vue";var mu=fu.exports;mu.install=function(e){e.component(mu.name,mu)};var vu=mu,gu=function(){var e=this.$createElement;return(this._self._c||e)("header",{staticClass:"el-header",style:{height:this.height}},[this._t("default")],2)};gu._withStripped=!0;var _u=r({name:"ElHeader",componentName:"ElHeader",props:{height:{type:String,default:"60px"}}},gu,[],!1,null,null,null);_u.options.__file="packages/header/src/main.vue";var bu=_u.exports;bu.install=function(e){e.component(bu.name,bu)};var yu=bu,xu=function(){var e=this.$createElement;return(this._self._c||e)("aside",{staticClass:"el-aside",style:{width:this.width}},[this._t("default")],2)};xu._withStripped=!0;var ku=r({name:"ElAside",componentName:"ElAside",props:{width:{type:String,default:"300px"}}},xu,[],!1,null,null,null);ku.options.__file="packages/aside/src/main.vue";var wu=ku.exports;wu.install=function(e){e.component(wu.name,wu)};var Cu=wu,Su=function(){var e=this.$createElement;return(this._self._c||e)("main",{staticClass:"el-main"},[this._t("default")],2)};Su._withStripped=!0;var Ou=r({name:"ElMain",componentName:"ElMain"},Su,[],!1,null,null,null);Ou.options.__file="packages/main/src/main.vue";var Du=Ou.exports;Du.install=function(e){e.component(Du.name,Du)};var Eu=Du,Tu=function(){var e=this.$createElement;return(this._self._c||e)("footer",{staticClass:"el-footer",style:{height:this.height}},[this._t("default")],2)};Tu._withStripped=!0;var $u=r({name:"ElFooter",componentName:"ElFooter",props:{height:{type:String,default:"60px"}}},Tu,[],!1,null,null,null);$u.options.__file="packages/footer/src/main.vue";var Pu=$u.exports;Pu.install=function(e){e.component(Pu.name,Pu)};var ju=Pu,Mu=r({name:"ElTimeline",props:{reverse:{type:Boolean,default:!1}},provide:function(){return{timeline:this}},render:function(){var e=arguments[0],t=this.reverse,i={"el-timeline":!0,"is-reverse":t},n=this.$slots.default||[];return t&&(n=n.reverse()),e("ul",{class:i},[n])}},void 0,void 0,!1,null,null,null);Mu.options.__file="packages/timeline/src/main.vue";var Iu=Mu.exports;Iu.install=function(e){e.component(Iu.name,Iu)};var Au=Iu,Nu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-timeline-item"},[i("div",{staticClass:"el-timeline-item__tail"}),e.$slots.dot?e._e():i("div",{staticClass:"el-timeline-item__node",class:["el-timeline-item__node--"+(e.size||""),"el-timeline-item__node--"+(e.type||"")],style:{backgroundColor:e.color}},[e.icon?i("i",{staticClass:"el-timeline-item__icon",class:e.icon}):e._e()]),e.$slots.dot?i("div",{staticClass:"el-timeline-item__dot"},[e._t("dot")],2):e._e(),i("div",{staticClass:"el-timeline-item__wrapper"},[e.hideTimestamp||"top"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-top"},[e._v("\n "+e._s(e.timestamp)+"\n ")]),i("div",{staticClass:"el-timeline-item__content"},[e._t("default")],2),e.hideTimestamp||"bottom"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-bottom"},[e._v("\n "+e._s(e.timestamp)+"\n ")])])])};Nu._withStripped=!0;var Lu=r({name:"ElTimelineItem",inject:["timeline"],props:{timestamp:String,hideTimestamp:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},type:String,color:String,size:{type:String,default:"normal"},icon:String}},Nu,[],!1,null,null,null);Lu.options.__file="packages/timeline/src/item.vue";var Fu=Lu.exports;Fu.install=function(e){e.component(Fu.name,Fu)};var Vu=Fu,zu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",e._b({class:["el-link",e.type?"el-link--"+e.type:"",e.disabled&&"is-disabled",e.underline&&!e.disabled&&"is-underline"],attrs:{href:e.disabled?null:e.href},on:{click:e.handleClick}},"a",e.$attrs,!1),[e.icon?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",{staticClass:"el-link--inner"},[e._t("default")],2):e._e(),e.$slots.icon?[e.$slots.icon?e._t("icon"):e._e()]:e._e()],2)};zu._withStripped=!0;var Ru=r({name:"ElLink",props:{type:{type:String,default:"default"},underline:{type:Boolean,default:!0},disabled:Boolean,href:String,icon:String},methods:{handleClick:function(e){this.disabled||this.href||this.$emit("click",e)}}},zu,[],!1,null,null,null);Ru.options.__file="packages/link/src/main.vue";var Bu=Ru.exports;Bu.install=function(e){e.component(Bu.name,Bu)};var Hu=Bu,Wu=function(e,t){var i=t._c;return i("div",t._g(t._b({class:[t.data.staticClass,"el-divider","el-divider--"+t.props.direction]},"div",t.data.attrs,!1),t.listeners),[t.slots().default&&"vertical"!==t.props.direction?i("div",{class:["el-divider__text","is-"+t.props.contentPosition]},[t._t("default")],2):t._e()])};Wu._withStripped=!0;var qu=r({name:"ElDivider",props:{direction:{type:String,default:"horizontal",validator:function(e){return-1!==["horizontal","vertical"].indexOf(e)}},contentPosition:{type:String,default:"center",validator:function(e){return-1!==["left","center","right"].indexOf(e)}}}},Wu,[],!0,null,null,null);qu.options.__file="packages/divider/src/main.vue";var Uu=qu.exports;Uu.install=function(e){e.component(Uu.name,Uu)};var Gu=Uu,Yu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-image"},[e.loading?e._t("placeholder",[i("div",{staticClass:"el-image__placeholder"})]):e.error?e._t("error",[i("div",{staticClass:"el-image__error"},[e._v(e._s(e.t("el.image.error")))])]):i("img",e._g(e._b({staticClass:"el-image__inner",class:{"el-image__inner--center":e.alignCenter,"el-image__preview":e.preview},style:e.imageStyle,attrs:{src:e.src},on:{click:e.clickHandler}},"img",e.$attrs,!1),e.$listeners)),e.preview?[e.showViewer?i("image-viewer",{attrs:{"z-index":e.zIndex,"initial-index":e.imageIndex,"on-close":e.closeViewer,"url-list":e.previewSrcList}}):e._e()]:e._e()],2)};Yu._withStripped=!0;var Ku=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"viewer-fade"}},[i("div",{ref:"el-image-viewer__wrapper",staticClass:"el-image-viewer__wrapper",style:{"z-index":e.viewerZIndex},attrs:{tabindex:"-1"}},[i("div",{staticClass:"el-image-viewer__mask",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleMaskClick(t)}}}),i("span",{staticClass:"el-image-viewer__btn el-image-viewer__close",on:{click:e.hide}},[i("i",{staticClass:"el-icon-close"})]),e.isSingle?e._e():[i("span",{staticClass:"el-image-viewer__btn el-image-viewer__prev",class:{"is-disabled":!e.infinite&&e.isFirst},on:{click:e.prev}},[i("i",{staticClass:"el-icon-arrow-left"})]),i("span",{staticClass:"el-image-viewer__btn el-image-viewer__next",class:{"is-disabled":!e.infinite&&e.isLast},on:{click:e.next}},[i("i",{staticClass:"el-icon-arrow-right"})])],i("div",{staticClass:"el-image-viewer__btn el-image-viewer__actions"},[i("div",{staticClass:"el-image-viewer__actions__inner"},[i("i",{staticClass:"el-icon-zoom-out",on:{click:function(t){e.handleActions("zoomOut")}}}),i("i",{staticClass:"el-icon-zoom-in",on:{click:function(t){e.handleActions("zoomIn")}}}),i("i",{staticClass:"el-image-viewer__actions__divider"}),i("i",{class:e.mode.icon,on:{click:e.toggleMode}}),i("i",{staticClass:"el-image-viewer__actions__divider"}),i("i",{staticClass:"el-icon-refresh-left",on:{click:function(t){e.handleActions("anticlocelise")}}}),i("i",{staticClass:"el-icon-refresh-right",on:{click:function(t){e.handleActions("clocelise")}}})])]),i("div",{staticClass:"el-image-viewer__canvas"},e._l(e.urlList,(function(t,n){return n===e.index?i("img",{key:t,ref:"img",refInFor:!0,staticClass:"el-image-viewer__img",style:e.imgStyle,attrs:{src:e.currentImg},on:{load:e.handleImgLoad,error:e.handleImgError,mousedown:e.handleMouseDown}}):e._e()})),0)],2)])};Ku._withStripped=!0;var Xu=Object.assign||function(e){for(var t=1;te?this.zIndex:e}},watch:{index:{handler:function(e){this.reset(),this.onSwitch(e)}},currentImg:function(e){var t=this;this.$nextTick((function(e){t.$refs.img[0].complete||(t.loading=!0)}))}},methods:{hide:function(){this.deviceSupportUninstall(),this.onClose()},deviceSupportInstall:function(){var e=this;this._keyDownHandler=function(t){switch(t.stopPropagation(),t.keyCode){case 27:e.hide();break;case 32:e.toggleMode();break;case 37:e.prev();break;case 38:e.handleActions("zoomIn");break;case 39:e.next();break;case 40:e.handleActions("zoomOut")}},this._mouseWheelHandler=Object(m.rafThrottle)((function(t){(t.wheelDelta?t.wheelDelta:-t.detail)>0?e.handleActions("zoomIn",{zoomRate:.015,enableTransition:!1}):e.handleActions("zoomOut",{zoomRate:.015,enableTransition:!1})})),Object(fe.on)(document,"keydown",this._keyDownHandler),Object(fe.on)(document,Qu,this._mouseWheelHandler)},deviceSupportUninstall:function(){Object(fe.off)(document,"keydown",this._keyDownHandler),Object(fe.off)(document,Qu,this._mouseWheelHandler),this._keyDownHandler=null,this._mouseWheelHandler=null},handleImgLoad:function(e){this.loading=!1},handleImgError:function(e){this.loading=!1,e.target.alt="加载失败"},handleMouseDown:function(e){var t=this;if(!this.loading&&0===e.button){var i=this.transform,n=i.offsetX,r=i.offsetY,s=e.pageX,a=e.pageY;this._dragHandler=Object(m.rafThrottle)((function(e){t.transform.offsetX=n+e.pageX-s,t.transform.offsetY=r+e.pageY-a})),Object(fe.on)(document,"mousemove",this._dragHandler),Object(fe.on)(document,"mouseup",(function(e){Object(fe.off)(document,"mousemove",t._dragHandler)})),e.preventDefault()}},handleMaskClick:function(){this.maskClosable&&this.hide()},reset:function(){this.transform={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}},toggleMode:function(){if(!this.loading){var e=Object.keys(Zu),t=(Object.values(Zu).indexOf(this.mode)+1)%e.length;this.mode=Zu[e[t]],this.reset()}},prev:function(){if(!this.isFirst||this.infinite){var e=this.urlList.length;this.index=(this.index-1+e)%e}},next:function(){if(!this.isLast||this.infinite){var e=this.urlList.length;this.index=(this.index+1)%e}},handleActions:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.loading){var i=Xu({zoomRate:.2,rotateDeg:90,enableTransition:!0},t),n=i.zoomRate,r=i.rotateDeg,s=i.enableTransition,a=this.transform;switch(e){case"zoomOut":a.scale>.2&&(a.scale=parseFloat((a.scale-n).toFixed(3)));break;case"zoomIn":a.scale=parseFloat((a.scale+n).toFixed(3));break;case"clocelise":a.deg+=r;break;case"anticlocelise":a.deg-=r}a.enableTransition=s}}},mounted:function(){this.deviceSupportInstall(),this.appendToBody&&document.body.appendChild(this.$el),this.$refs["el-image-viewer__wrapper"].focus()},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},Ku,[],!1,null,null,null);Ju.options.__file="packages/image/src/image-viewer.vue";var ec=Ju.exports,tc=function(){return void 0!==document.documentElement.style.objectFit},ic="none",nc="contain",rc="cover",sc="fill",ac="scale-down",oc="",lc=r({name:"ElImage",mixins:[f.a],inheritAttrs:!1,components:{ImageViewer:ec},props:{src:String,fit:String,lazy:Boolean,scrollContainer:{},previewSrcList:{type:Array,default:function(){return[]}},zIndex:{type:Number,default:2e3}},data:function(){return{loading:!0,error:!1,show:!this.lazy,imageWidth:0,imageHeight:0,showViewer:!1}},computed:{imageStyle:function(){var e=this.fit;return!this.$isServer&&e?tc()?{"object-fit":e}:this.getImageStyle(e):{}},alignCenter:function(){return!this.$isServer&&!tc()&&this.fit!==sc},preview:function(){var e=this.previewSrcList;return Array.isArray(e)&&e.length>0},imageIndex:function(){var e=0,t=this.previewSrcList.indexOf(this.src);return t>=0&&(e=t),e}},watch:{src:function(e){this.show&&this.loadImage()},show:function(e){e&&this.loadImage()}},mounted:function(){this.lazy?this.addLazyLoadListener():this.loadImage()},beforeDestroy:function(){this.lazy&&this.removeLazyLoadListener()},methods:{loadImage:function(){var e=this;if(!this.$isServer){this.loading=!0,this.error=!1;var t=new Image;t.onload=function(i){return e.handleLoad(i,t)},t.onerror=this.handleError.bind(this),Object.keys(this.$attrs).forEach((function(i){var n=e.$attrs[i];t.setAttribute(i,n)})),t.src=this.src}},handleLoad:function(e,t){this.imageWidth=t.width,this.imageHeight=t.height,this.loading=!1,this.error=!1},handleError:function(e){this.loading=!1,this.error=!0,this.$emit("error",e)},handleLazyLoad:function(){Object(fe.isInContainer)(this.$el,this._scrollContainer)&&(this.show=!0,this.removeLazyLoadListener())},addLazyLoadListener:function(){if(!this.$isServer){var e=this.scrollContainer,t=null;(t=Object(xo.isHtmlElement)(e)?e:Object(xo.isString)(e)?document.querySelector(e):Object(fe.getScrollContainer)(this.$el))&&(this._scrollContainer=t,this._lazyLoadHandler=Zo()(200,this.handleLazyLoad),Object(fe.on)(t,"scroll",this._lazyLoadHandler),this.handleLazyLoad())}},removeLazyLoadListener:function(){var e=this._scrollContainer,t=this._lazyLoadHandler;!this.$isServer&&e&&t&&(Object(fe.off)(e,"scroll",t),this._scrollContainer=null,this._lazyLoadHandler=null)},getImageStyle:function(e){var t=this.imageWidth,i=this.imageHeight,n=this.$el,r=n.clientWidth,s=n.clientHeight;if(!(t&&i&&r&&s))return{};var a=t/i,o=r/s;e===ac&&(e=tr)return console.warn("[ElementCalendar]end time should be greater than start time"),[];if(Object(hn.validateRangeInOneMonth)(n,r))return[[n,r]];var s=[],a=new Date(n.getFullYear(),n.getMonth()+1,1),o=this.toDate(a.getTime()-864e5);if(!Object(hn.validateRangeInOneMonth)(a,r))return console.warn("[ElementCalendar]start time and end time interval must not exceed two months"),[];s.push([n,o]);var l=this.realFirstDayOfWeek,u=a.getDay(),c=0;return u!==l&&(c=0===l?7-u:(c=l-u)>0?c:7+c),(a=this.toDate(a.getTime()+864e5*c)).getDate()6?0:Math.floor(this.firstDayOfWeek)}},data:function(){return{selectedDay:"",now:new Date}}},dc,[],!1,null,null,null);_c.options.__file="packages/calendar/src/main.vue";var bc=_c.exports;bc.install=function(e){e.component(bc.name,bc)};var yc=bc,xc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-fade-in"}},[e.visible?i("div",{staticClass:"el-backtop",style:{right:e.styleRight,bottom:e.styleBottom},on:{click:function(t){return t.stopPropagation(),e.handleClick(t)}}},[e._t("default",[i("el-icon",{attrs:{name:"caret-top"}})])],2):e._e()])};xc._withStripped=!0;var kc=function(e){return Math.pow(e,3)},wc=r({name:"ElBacktop",props:{visibilityHeight:{type:Number,default:200},target:[String],right:{type:Number,default:40},bottom:{type:Number,default:40}},data:function(){return{el:null,container:null,visible:!1}},computed:{styleBottom:function(){return this.bottom+"px"},styleRight:function(){return this.right+"px"}},mounted:function(){this.init(),this.throttledScrollHandler=Zo()(300,this.onScroll),this.container.addEventListener("scroll",this.throttledScrollHandler)},methods:{init:function(){if(this.container=document,this.el=document.documentElement,this.target){if(this.el=document.querySelector(this.target),!this.el)throw new Error("target is not existed: "+this.target);this.container=this.el}},onScroll:function(){var e=this.el.scrollTop;this.visible=e>=this.visibilityHeight},handleClick:function(e){this.scrollToTop(),this.$emit("click",e)},scrollToTop:function(){var e=this.el,t=Date.now(),i=e.scrollTop,n=window.requestAnimationFrame||function(e){return setTimeout(e,16)};n((function r(){var s,a=(Date.now()-t)/500;a<1?(e.scrollTop=i*(1-((s=a)<.5?kc(2*s)/2:1-kc(2*(1-s))/2)),n(r)):e.scrollTop=0}))}},beforeDestroy:function(){this.container.removeEventListener("scroll",this.throttledScrollHandler)}},xc,[],!1,null,null,null);wc.options.__file="packages/backtop/src/main.vue";var Cc=wc.exports;Cc.install=function(e){e.component(Cc.name,Cc)};var Sc=Cc,Oc=function(e,t){return e===window||e===document?document.documentElement[t]:e[t]},Dc=function(e){return Oc(e,"offsetHeight")},Ec="ElInfiniteScroll",Tc={delay:{type:Number,default:200},distance:{type:Number,default:0},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},$c=function(e,t){return Object(xo.isHtmlElement)(e)?(i=Tc,Object.keys(i||{}).map((function(e){return[e,i[e]]}))).reduce((function(i,n){var r=n[0],s=n[1],a=s.type,o=s.default,l=e.getAttribute("infinite-scroll-"+r);switch(l=Object(xo.isUndefined)(t[l])?l:t[l],a){case Number:l=Number(l),l=Number.isNaN(l)?o:l;break;case Boolean:l=Object(xo.isDefined)(l)?"false"!==l&&Boolean(l):o;break;default:l=a(l)}return i[r]=l,i}),{}):{};var i},Pc=function(e){return e.getBoundingClientRect().top},jc=function(e){var t=this[Ec],i=t.el,n=t.vm,r=t.container,s=t.observer,a=$c(i,n),o=a.distance;if(!a.disabled){var l=r.getBoundingClientRect();if(l.width||l.height){var u=!1;if(r===i){var c=r.scrollTop+function(e){return Oc(e,"clientHeight")}(r);u=r.scrollHeight-c<=o}else{u=Dc(i)+Pc(i)-Pc(r)-Dc(r)+Number.parseFloat(function(e,t){if(e===window&&(e=document.documentElement),1!==e.nodeType)return[];var i=window.getComputedStyle(e,null);return t?i[t]:i}(r,"borderBottomWidth"))<=o}u&&Object(xo.isFunction)(e)?e.call(n):s&&(s.disconnect(),this[Ec].observer=null)}}},Mc={name:"InfiniteScroll",inserted:function(e,t,i){var n=t.value,r=i.context,s=Object(fe.getScrollContainer)(e,!0),a=$c(e,r),o=a.delay,l=a.immediate,u=$()(o,jc.bind(e,n));(e[Ec]={el:e,vm:r,container:s,onScroll:u},s)&&(s.addEventListener("scroll",u),l&&((e[Ec].observer=new MutationObserver(u)).observe(s,{childList:!0,subtree:!0}),u()))},unbind:function(e){var t=e[Ec],i=t.container,n=t.onScroll;i&&i.removeEventListener("scroll",n)},install:function(e){e.directive(Mc.name,Mc)}},Ic=Mc,Ac=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-page-header"},[i("div",{staticClass:"el-page-header__left",on:{click:function(t){e.$emit("back")}}},[i("i",{staticClass:"el-icon-back"}),i("div",{staticClass:"el-page-header__title"},[e._t("title",[e._v(e._s(e.title))])],2)]),i("div",{staticClass:"el-page-header__content"},[e._t("content",[e._v(e._s(e.content))])],2)])};Ac._withStripped=!0;var Nc=r({name:"ElPageHeader",props:{title:{type:String,default:function(){return Object(Ir.t)("el.pageHeader.title")}},content:String}},Ac,[],!1,null,null,null);Nc.options.__file="packages/page-header/src/main.vue";var Lc=Nc.exports;Lc.install=function(e){e.component(Lc.name,Lc)};var Fc=Lc,Vc=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-cascader-panel",this.border&&"is-bordered"],on:{keydown:this.handleKeyDown}},this._l(this.menus,(function(e,i){return t("cascader-menu",{key:i,ref:"menu",refInFor:!0,attrs:{index:i,nodes:e}})})),1)};Vc._withStripped=!0;var zc=i(43),Rc=i.n(zc),Bc=function(e){return e.stopPropagation()},Hc=r({inject:["panel"],components:{ElCheckbox:ri.a,ElRadio:Rc.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some((function(t){return e.isInPath(t)}))},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,i=this.node,n=this.isDisabled,r=this.config,s=r.multiple;!r.checkStrictly&&n||i.loading||(r.lazy&&!i.loaded?t.lazyLoad(i,(function(){var t=e.isLeaf;if(t||e.handleExpand(),s){var n=!!t&&i.checked;e.handleMultiCheckChange(n)}})):t.handleExpand(i))},handleCheckChange:function(){var e=this.panel,t=this.value,i=this.node;e.handleCheckChange(t),e.handleExpand(i)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,i=this.isChecked,n=this.config,r=n.checkStrictly;return n.multiple?this.renderCheckbox(e):r?this.renderRadio(e):t&&i?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,i=this.isLeaf;return t.loading?this.renderLoadingIcon(e):i?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,i=this.config,n=this.isDisabled,r={on:{change:this.handleMultiCheckChange},nativeOn:{}};return i.checkStrictly&&(r.nativeOn.click=Bc),e("el-checkbox",Ja()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:n}},r]))},renderRadio:function(e){var t=this.checkedValue,i=this.value,n=this.isDisabled;return Object(m.isEqual)(i,t)&&(i=t),e("el-radio",{attrs:{value:t,label:i,disabled:n},on:{change:this.handleCheckChange},nativeOn:{click:Bc}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,i=this.node,n=t.renderLabelFn;return e("span",{class:"el-cascader-node__label"},[(n?n({node:i,data:i.data}):null)||i.label])}},render:function(e){var t=this,i=this.inActivePath,n=this.inCheckedPath,r=this.isChecked,s=this.isLeaf,a=this.isDisabled,o=this.config,l=this.nodeId,u=o.expandTrigger,c=o.checkStrictly,d=o.multiple,h=!c&&a,p={on:{}};return"click"===u?p.on.click=this.handleExpand:(p.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},p.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),!s||a||c||d||(p.on.click=this.handleCheckChange),e("li",Ja()([{attrs:{role:"menuitem",id:l,"aria-expanded":i,tabindex:h?null:-1},class:{"el-cascader-node":!0,"is-selectable":c,"in-active-path":i,"in-checked-path":n,"is-active":r,"is-disabled":h}},p]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},void 0,void 0,!1,null,null,null);Hc.options.__file="packages/cascader-panel/src/cascader-node.vue";var Wc=Hc.exports,qc=r({name:"ElCascaderMenu",mixins:[f.a],inject:["panel"],components:{ElScrollbar:L.a,CascaderNode:Wc},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(m.generateId)()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,i=this.hoverTimer,n=this.$refs.hoverZone;if(t&&n)if(t.contains(e.target)){clearTimeout(i);var r=this.$el.getBoundingClientRect().left,s=e.clientX-r,a=this.$el,o=a.offsetWidth,l=a.offsetHeight,u=t.offsetTop,c=u+t.offsetHeight;n.innerHTML='\n \n \n '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var r=this.nodes.map((function(i,r){var s=i.hasChildren;return e("cascader-node",Ja()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+r,"aria-haspopup":s,"aria-owns":s?t:null}},n]))}));return[].concat(r,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",Ja()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},void 0,void 0,!1,null,null,null);qc.options.__file="packages/cascader-panel/src/cascader-menu.vue";var Uc=qc.exports,Gc=function(){function e(e,t){for(var i=0;i1?t-1:0),n=1;n1?n-1:0),s=1;s0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},Gc(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,r=i.checkStrictly;return e[n]||!r&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,r=this.config,s=r.lazy,a=r.leaf;if(s){var o=Object(He.isDef)(e[a])?e[a]:!!t&&!n.length;return this.hasChildren=!o,o}return!i}}]),e}();var Xc=function e(t,i){return t.reduce((function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t}),[])},Zc=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(m.coerceTruthyValueToArray)(e),this.nodes=e.map((function(e){return new Kc(e,t.config)})),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new Kc(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=Object(m.coerceTruthyValueToArray)(e)).forEach((function(e){return i.appendNode(e,t)}))},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:Xc(this.nodes,e)},e.prototype.getNodeByValue=function(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter((function(t){return Object(m.valueEquals)(t.path,e)||t.value===e}));return t&&t.length?t[0]:null},e}(),Qc=Object.assign||function(e){for(var t=1;t0){var l=i.store.getNodeByValue(s);l.data[o]||i.lazyLoad(l,(function(){i.handleExpand(l)})),i.loadCount===i.checkedValue.length&&i.$parent.computePresentText()}}t&&t(n)}))},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map((function(e){return e.getValueByOption()}))},scrollIntoView:function(){this.$isServer||(this.$refs.menu||[]).forEach((function(e){var t=e.$el;if(t){var i=t.querySelector(".el-scrollbar__wrap"),n=t.querySelector(".el-cascader-node.is-active")||t.querySelector(".el-cascader-node.in-active-path");Vt()(i,n)}}))},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue;return this.multiple?this.getFlattedNodes(e).filter((function(e){return e.checked})):this.isEmptyValue(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,i=e.multiple,n=e.emitPath;i?(this.getCheckedNodes(t).filter((function(e){return!e.isDisabled})).forEach((function(e){return e.doCheck(!1)})),this.calculateMultiCheckedValue()):this.checkedValue=n?[]:null}}},Vc,[],!1,null,null,null);sd.options.__file="packages/cascader-panel/src/cascader-panel.vue";var ad=sd.exports;ad.install=function(e){e.component(ad.name,ad)};var od=ad,ld=r({name:"ElAvatar",props:{size:{type:[Number,String],validator:function(e){return"string"==typeof e?["large","medium","small"].includes(e):"number"==typeof e}},shape:{type:String,default:"circle",validator:function(e){return["circle","square"].includes(e)}},icon:String,src:String,alt:String,srcSet:String,error:Function,fit:{type:String,default:"cover"}},data:function(){return{isImageExist:!0}},computed:{avatarClass:function(){var e=this.size,t=this.icon,i=this.shape,n=["el-avatar"];return e&&"string"==typeof e&&n.push("el-avatar--"+e),t&&n.push("el-avatar--icon"),i&&n.push("el-avatar--"+i),n.join(" ")}},methods:{handleError:function(){var e=this.error;!1!==(e?e():void 0)&&(this.isImageExist=!1)},renderAvatar:function(){var e=this.$createElement,t=this.icon,i=this.src,n=this.alt,r=this.isImageExist,s=this.srcSet,a=this.fit;return r&&i?e("img",{attrs:{src:i,alt:n,srcSet:s},on:{error:this.handleError},style:{"object-fit":a}}):t?e("i",{class:t}):this.$slots.default}},render:function(){var e=arguments[0],t=this.avatarClass,i=this.size,n="number"==typeof i?{height:i+"px",width:i+"px",lineHeight:i+"px"}:{};return e("span",{class:t,style:n},[this.renderAvatar()])}},void 0,void 0,!1,null,null,null);ld.options.__file="packages/avatar/src/main.vue";var ud=ld.exports;ud.install=function(e){e.component(ud.name,ud)};var cd=ud,dd=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-drawer-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-drawer__wrapper",attrs:{tabindex:"-1"}},[i("div",{staticClass:"el-drawer__container",class:e.visible&&"el-drawer__open",attrs:{role:"document",tabindex:"-1"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{ref:"drawer",staticClass:"el-drawer",class:[e.direction,e.customClass],style:e.isHorizontal?"width: "+e.drawerSize:"height: "+e.drawerSize,attrs:{"aria-modal":"true","aria-labelledby":"el-drawer__title","aria-label":e.title,role:"dialog",tabindex:"-1"}},[e.withHeader?i("header",{staticClass:"el-drawer__header",attrs:{id:"el-drawer__title"}},[e._t("title",[i("span",{attrs:{role:"heading",title:e.title}},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-drawer__close-btn",attrs:{"aria-label":"close "+(e.title||"drawer"),type:"button"},on:{click:e.closeDrawer}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2):e._e(),e.rendered?i("section",{staticClass:"el-drawer__body"},[e._t("default")],2):e._e()])])])])};dd._withStripped=!0;var hd=r({name:"ElDrawer",mixins:[y.a,C.a],props:{appendToBody:{type:Boolean,default:!1},beforeClose:{type:Function},customClass:{type:String,default:""},closeOnPressEscape:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},modal:{type:Boolean,default:!0},direction:{type:String,default:"rtl",validator:function(e){return-1!==["ltr","rtl","ttb","btt"].indexOf(e)}},modalAppendToBody:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},size:{type:[Number,String],default:"30%"},title:{type:String,default:""},visible:{type:Boolean},wrapperClosable:{type:Boolean,default:!0},withHeader:{type:Boolean,default:!0}},computed:{isHorizontal:function(){return"rtl"===this.direction||"ltr"===this.direction},drawerSize:function(){return"number"==typeof this.size?this.size+"px":this.size}},data:function(){return{closed:!1,prevActiveElement:null}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.appendToBody&&document.body.appendChild(this.$el),this.prevActiveElement=document.activeElement):(this.closed||(this.$emit("close"),!0===this.destroyOnClose&&(this.rendered=!1)),this.$nextTick((function(){t.prevActiveElement&&t.prevActiveElement.focus()})))}},methods:{afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),!0===this.destroyOnClose&&(this.rendered=!1),this.closed=!0)},handleWrapperClick:function(){this.wrapperClosable&&this.closeDrawer()},closeDrawer:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},handleClose:function(){this.closeDrawer()}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},dd,[],!1,null,null,null);hd.options.__file="packages/drawer/src/main.vue";var pd=hd.exports;pd.install=function(e){e.component(pd.name,pd)};var fd=pd,md=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("el-popover",e._b({attrs:{trigger:"click"},model:{value:e.visible,callback:function(t){e.visible=t},expression:"visible"}},"el-popover",e.$attrs,!1),[i("div",{staticClass:"el-popconfirm"},[i("p",{staticClass:"el-popconfirm__main"},[e.hideIcon?e._e():i("i",{staticClass:"el-popconfirm__icon",class:e.icon,style:{color:e.iconColor}}),e._v("\n "+e._s(e.title)+"\n ")]),i("div",{staticClass:"el-popconfirm__action"},[i("el-button",{attrs:{size:"mini",type:e.cancelButtonType},on:{click:e.cancel}},[e._v("\n "+e._s(e.displayCancelButtonText)+"\n ")]),i("el-button",{attrs:{size:"mini",type:e.confirmButtonType},on:{click:e.confirm}},[e._v("\n "+e._s(e.displayConfirmButtonText)+"\n ")])],1)]),e._t("reference",null,{slot:"reference"})],2)};md._withStripped=!0;var vd=i(44),gd=r({name:"ElPopconfirm",props:{title:{type:String},confirmButtonText:{type:String},cancelButtonText:{type:String},confirmButtonType:{type:String,default:"primary"},cancelButtonType:{type:String,default:"text"},icon:{type:String,default:"el-icon-question"},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1}},components:{ElPopover:i.n(vd).a,ElButton:U.a},data:function(){return{visible:!1}},computed:{displayConfirmButtonText:function(){return this.confirmButtonText||Object(Ir.t)("el.popconfirm.confirmButtonText")},displayCancelButtonText:function(){return this.cancelButtonText||Object(Ir.t)("el.popconfirm.cancelButtonText")}},methods:{confirm:function(){this.visible=!1,this.$emit("confirm")},cancel:function(){this.visible=!1,this.$emit("cancel")}}},md,[],!1,null,null,null);gd.options.__file="packages/popconfirm/src/main.vue";var _d=gd.exports;_d.install=function(e){e.component(_d.name,_d)};var bd=_d,yd=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[e.uiLoading?[i("div",e._b({class:["el-skeleton",e.animated?"is-animated":""]},"div",e.$attrs,!1),[e._l(e.count,(function(t){return[e.loading?e._t("template",e._l(e.rows,(function(n){return i("el-skeleton-item",{key:t+"-"+n,class:{"el-skeleton__paragraph":1!==n,"is-first":1===n,"is-last":n===e.rows&&e.rows>1},attrs:{variant:"p"}})}))):e._e()]}))],2)]:[e._t("default",null,null,e.$attrs)]],2)};yd._withStripped=!0;var xd=r({name:"ElSkeleton",props:{animated:{type:Boolean,default:!1},count:{type:Number,default:1},rows:{type:Number,default:4},loading:{type:Boolean,default:!0},throttle:{type:Number,default:0}},watch:{loading:{handler:function(e){var t=this;this.throttle<=0?this.uiLoading=e:e?(clearTimeout(this.timeoutHandle),this.timeoutHandle=setTimeout((function(){t.uiLoading=t.loading}),this.throttle)):this.uiLoading=e},immediate:!0}},data:function(){return{uiLoading:this.throttle<=0&&this.loading}}},yd,[],!1,null,null,null);xd.options.__file="packages/skeleton/src/index.vue";var kd=xd.exports;kd.install=function(e){e.component(kd.name,kd)};var wd=kd,Cd=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-skeleton__item","el-skeleton__"+this.variant]},["image"===this.variant?t("img-placeholder"):this._e()],1)};Cd._withStripped=!0;var Sd=function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{d:"M64 896V128h896v768H64z m64-128l192-192 116.352 116.352L640 448l256 307.2V192H128v576z m224-480a96 96 0 1 1-0.064 192.064A96 96 0 0 1 352 288z"}})])};Sd._withStripped=!0;var Od=r({name:"ImgPlaceholder"},Sd,[],!1,null,null,null);Od.options.__file="packages/skeleton/src/img-placeholder.vue";var Dd,Ed=Od.exports,Td=r({name:"ElSkeletonItem",props:{variant:{type:String,default:"text"}},components:(Dd={},Dd[Ed.name]=Ed,Dd)},Cd,[],!1,null,null,null);Td.options.__file="packages/skeleton/src/item.vue";var $d=Td.exports;$d.install=function(e){e.component($d.name,$d)};var Pd=$d,jd=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-empty"},[i("div",{staticClass:"el-empty__image",style:e.imageStyle},[e.image?i("img",{attrs:{src:e.image,ondragstart:"return false"}}):e._t("image",[i("img-empty")])],2),i("div",{staticClass:"el-empty__description"},[e.$slots.description?e._t("description"):i("p",[e._v(e._s(e.emptyDescription))])],2),e.$slots.default?i("div",{staticClass:"el-empty__bottom"},[e._t("default")],2):e._e()])};jd._withStripped=!0;var Md=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("svg",{attrs:{viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[i("defs",[i("linearGradient",{attrs:{id:"linearGradient-1-"+e.id,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"}},[i("stop",{attrs:{"stop-color":"#FCFCFD",offset:"0%"}}),i("stop",{attrs:{"stop-color":"#EEEFF3",offset:"100%"}})],1),i("linearGradient",{attrs:{id:"linearGradient-2-"+e.id,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"}},[i("stop",{attrs:{"stop-color":"#FCFCFD",offset:"0%"}}),i("stop",{attrs:{"stop-color":"#E9EBEF",offset:"100%"}})],1),i("rect",{attrs:{id:"path-3-"+e.id,x:"0",y:"0",width:"17",height:"36"}})],1),i("g",{attrs:{id:"Illustrations",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"}},[i("g",{attrs:{id:"B-type",transform:"translate(-1268.000000, -535.000000)"}},[i("g",{attrs:{id:"Group-2",transform:"translate(1268.000000, 535.000000)"}},[i("path",{attrs:{id:"Oval-Copy-2",d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:"#F7F8FC"}}),i("polygon",{attrs:{id:"Rectangle-Copy-14",fill:"#E5E7E9",transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"}}),i("g",{attrs:{id:"Group-Copy",transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"}},[i("polygon",{attrs:{id:"Rectangle-Copy-10",fill:"#E5E7E9",transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"}}),i("polygon",{attrs:{id:"Rectangle-Copy-11",fill:"#EDEEF2",points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"}}),i("rect",{attrs:{id:"Rectangle-Copy-12",fill:"url(#linearGradient-1-"+e.id+")",transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"}}),i("polygon",{attrs:{id:"Rectangle-Copy-13",fill:"#F8F9FB",transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"}})]),i("rect",{attrs:{id:"Rectangle-Copy-15",fill:"url(#linearGradient-2-"+e.id+")",x:"13",y:"45",width:"40",height:"36"}}),i("g",{attrs:{id:"Rectangle-Copy-17",transform:"translate(53.000000, 45.000000)"}},[i("mask",{attrs:{id:"mask-4-"+e.id,fill:"white"}},[i("use",{attrs:{"xlink:href":"#path-3-"+e.id}})]),i("use",{attrs:{id:"Mask",fill:"#E0E3E9",transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":"#path-3-"+e.id}}),i("polygon",{attrs:{id:"Rectangle-Copy",fill:"#D5D7DE",mask:"url(#mask-4-"+e.id+")",transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 -1.70530257e-13 16"}})]),i("polygon",{attrs:{id:"Rectangle-Copy-18",fill:"#F8F9FB",transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"}})])])])])};Md._withStripped=!0;var Id=0,Ad=r({name:"ImgEmpty",data:function(){return{id:++Id}}},Md,[],!1,null,null,null);Ad.options.__file="packages/empty/src/img-empty.vue";var Nd,Ld=Ad.exports,Fd=r({name:"ElEmpty",components:(Nd={},Nd[Ld.name]=Ld,Nd),props:{image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}},computed:{emptyDescription:function(){return this.description||Object(Ir.t)("el.empty.description")},imageStyle:function(){return{width:this.imageSize?this.imageSize+"px":""}}}},jd,[],!1,null,null,null);Fd.options.__file="packages/empty/src/index.vue";var Vd=Fd.exports;Vd.install=function(e){e.component(Vd.name,Vd)};var zd,Rd=Vd,Bd=Object.assign||function(e){for(var t=1;t3&&void 0!==arguments[3]&&arguments[3];return e.props||(e.props={}),t>i&&(e.props.span=i),n&&(e.props.span=i),e},getRows:function(){var e=this,t=(this.$slots.default||[]).filter((function(e){return e.tag&&e.componentOptions&&"ElDescriptionsItem"===e.componentOptions.Ctor.options.name})),i=t.map((function(t){return{props:e.getOptionProps(t),slots:e.getSlots(t),vnode:t}})),n=[],r=[],s=this.column;return i.forEach((function(i,a){var o=i.props.span||1;if(a===t.length-1)return r.push(e.filledNode(i,o,s,!0)),void n.push(r);o1&&void 0!==arguments[1]?arguments[1]:{};Ar.a.use(t.locale),Ar.a.i18n(t.i18n),ph.forEach((function(t){e.component(t.name,t)})),e.use(Ic),e.use(La.directive),e.prototype.$ELEMENT={size:t.size||"",zIndex:t.zIndex||2e3},e.prototype.$loading=La.service,e.prototype.$msgbox=Qr,e.prototype.$alert=Qr.alert,e.prototype.$confirm=Qr.confirm,e.prototype.$prompt=Qr.prompt,e.prototype.$notify=pa,e.prototype.$message=Eo};"undefined"!=typeof window&&window.Vue&&fh(window.Vue);t.default={version:"2.15.6",locale:Ar.a.use,i18n:Ar.a.i18n,install:fh,CollapseTransition:be.a,Loading:La,Pagination:g,Dialog:D,Autocomplete:W,Dropdown:Z,DropdownMenu:te,DropdownItem:se,Menu:ge,Submenu:Ce,MenuItem:$e,MenuItemGroup:Ie,Input:Ue,InputNumber:Ze,Radio:tt,RadioGroup:at,RadioButton:ct,Checkbox:ft,CheckboxButton:_t,CheckboxGroup:kt,Switch:Ot,Select:Bt,Option:Ht,OptionGroup:Gt,Button:Zt,ButtonGroup:ti,Table:nn,TableColumn:cn,DatePicker:or,TimeSelect:mr,TimePicker:Cr,Popover:$r,Tooltip:jr,MessageBox:Qr,Breadcrumb:is,BreadcrumbItem:as,Form:cs,FormItem:_s,Tabs:Ds,TabPane:Ps,Tag:Is,Tree:Qs,Alert:na,Notification:pa,Slider:wa,Icon:Ra,Row:Ha,Col:Ua,Upload:oo,Progress:ho,Spinner:vo,Message:Eo,Badge:jo,Card:No,Rate:zo,Steps:Wo,Step:Yo,Carousel:el,Scrollbar:sl,CarouselItem:ul,Collapse:pl,CollapseItem:gl,Cascader:Tl,ColorPicker:su,Transfer:hu,Container:vu,Header:yu,Aside:Cu,Main:Eu,Footer:ju,Timeline:Au,TimelineItem:Vu,Link:Hu,Divider:Gu,Image:cc,Calendar:yc,Backtop:Sc,InfiniteScroll:Ic,PageHeader:Fc,CascaderPanel:od,Avatar:cd,Drawer:fd,Popconfirm:bd,Skeleton:wd,SkeletonItem:Pd,Empty:Rd,Descriptions:Ud,DescriptionsItem:Yd,Result:hh}}]).default},function(e){e.exports=JSON.parse('{"selection":{"domain":{"template":"Domain","characteristics":{"Agent":"MultiAgent","Concurrency":"Parallel","Constraints":"(none)","Dynamics":"Environment","Events":"Events","Goals":"(none)","Initialization":"(none)","Memory":"History","Observability":"PartiallyObservable","Renderability":"(none)","Value":"Rewards"},"showFinetunedOnly":true,"simplifySignatures":true},"solver":{"template":"Solver","characteristics":{"Assessability":"(none)","Parallelability":"(none)","Policy":"(none)","Restorability":"(none)"},"showFinetunedOnly":true}},"templates":{"domain":[{"name":"Domain","characteristics":{"Agent":"MultiAgent","Concurrency":"Parallel","Constraints":"(none)","Dynamics":"Environment","Events":"Events","Goals":"(none)","Initialization":"(none)","Memory":"History","Observability":"PartiallyObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"RLDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"Environment","Events":"Actions","Goals":"(none)","Initialization":"Initializable","Memory":"Markovian","Observability":"TransformedObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"MultiAgentRLDomain","characteristics":{"Agent":"MultiAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"Environment","Events":"Actions","Goals":"(none)","Initialization":"Initializable","Memory":"Markovian","Observability":"TransformedObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"StatelessSimulatorDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"Simulation","Events":"Actions","Goals":"(none)","Initialization":"(none)","Memory":"Markovian","Observability":"TransformedObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"MDPDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"EnumerableTransitions","Events":"Actions","Goals":"(none)","Initialization":"DeterministicInitialized","Memory":"Markovian","Observability":"FullyObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"POMDPDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"EnumerableTransitions","Events":"Actions","Goals":"(none)","Initialization":"UncertainInitialized","Memory":"Markovian","Observability":"PartiallyObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"GoalMDPDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"EnumerableTransitions","Events":"Actions","Goals":"Goals","Initialization":"DeterministicInitialized","Memory":"Markovian","Observability":"FullyObservable","Renderability":"(none)","Value":"PositiveCosts"}},{"name":"GoalPOMDPDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"EnumerableTransitions","Events":"Actions","Goals":"Goals","Initialization":"UncertainInitialized","Memory":"Markovian","Observability":"PartiallyObservable","Renderability":"(none)","Value":"PositiveCosts"}},{"name":"DeterministicPlanningDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"DeterministicTransitions","Events":"Actions","Goals":"Goals","Initialization":"DeterministicInitialized","Memory":"Markovian","Observability":"FullyObservable","Renderability":"(none)","Value":"PositiveCosts"}},{"name":"ParallelDomain","characteristics":{"Agent":"(none)","Concurrency":"(none)","Constraints":"(none)","Dynamics":"(none)","Events":"(none)","Goals":"(none)","Initialization":"(none)","Memory":"(none)","Observability":"(none)","Renderability":"(none)","Value":"(none)"}},{"name":"PipeParallelDomain","characteristics":{"Agent":"(none)","Concurrency":"(none)","Constraints":"(none)","Dynamics":"(none)","Events":"(none)","Goals":"(none)","Initialization":"(none)","Memory":"(none)","Observability":"(none)","Renderability":"(none)","Value":"(none)","Domains":"ParallelDomain"}},{"name":"ShmParallelDomain","characteristics":{"Agent":"(none)","Concurrency":"(none)","Constraints":"(none)","Dynamics":"(none)","Events":"(none)","Goals":"(none)","Initialization":"(none)","Memory":"(none)","Observability":"(none)","Renderability":"(none)","Value":"(none)","Domains":"ParallelDomain"}}],"solver":[{"name":"Solver","characteristics":{"Assessability":"(none)","Parallelability":"(none)","Policy":"(none)","Restorability":"(none)"}},{"name":"DeterministicPolicySolver","characteristics":{"Assessability":"(none)","Parallelability":"(none)","Policy":"DeterministicPolicies","Restorability":"(none)"}}]},"characteristics":{"domain":[{"name":"Agent","levels":["MultiAgent","SingleAgent"]},{"name":"Concurrency","levels":["Parallel","Sequential"]},{"name":"Constraints","levels":["(none)","Constrained"]},{"name":"Dynamics","levels":["Environment","Simulation","UncertainTransitions","EnumerableTransitions","DeterministicTransitions"]},{"name":"Events","levels":["Events","Actions","UnrestrictedActions"]},{"name":"Goals","levels":["(none)","Goals"]},{"name":"Initialization","levels":["(none)","Initializable","UncertainInitialized","DeterministicInitialized"]},{"name":"Memory","levels":["History","FiniteHistory","Markovian","Memoryless"]},{"name":"Observability","levels":["PartiallyObservable","TransformedObservable","FullyObservable"]},{"name":"Renderability","levels":["(none)","Renderable"]},{"name":"Value","levels":["Rewards","PositiveCosts"]}],"solver":[{"name":"Assessability","levels":["(none)","Utilities","QValues"]},{"name":"Parallelability","levels":["(none)","ParallelSolver"]},{"name":"Policy","levels":["(none)","Policies","UncertainPolicies","DeterministicPolicies"]},{"name":"Restorability","levels":["(none)","Restorable"]}]},"methods":{"domain":{"MultiAgent":[],"SingleAgent":[],"Parallel":[],"Sequential":[],"Constrained":["_get_constraints_"],"Environment":["_state_step"],"Simulation":["_state_sample"],"UncertainTransitions":["_get_next_state_distribution","_is_terminal","_get_transition_value"],"EnumerableTransitions":["_get_next_state_distribution","_is_terminal","_get_transition_value"],"DeterministicTransitions":["_is_terminal","_get_next_state","_get_transition_value"],"Events":["_get_applicable_actions_from","_get_action_space_","_get_enabled_events_from"],"Actions":["_get_applicable_actions_from","_get_action_space_"],"UnrestrictedActions":["_get_action_space_"],"Goals":["_get_goals_"],"Initializable":["_state_reset"],"UncertainInitialized":["_get_initial_state_distribution_"],"DeterministicInitialized":["_get_initial_state_"],"History":[],"FiniteHistory":["_get_memory_maxlen_"],"Markovian":[],"Memoryless":[],"PartiallyObservable":["_get_observation_space_","_get_observation_distribution"],"TransformedObservable":["_get_observation_space_","_get_observation"],"FullyObservable":["_get_observation_space_"],"Renderable":["_render_from"],"Rewards":[],"PositiveCosts":[],"domain":[]},"solver":{"Utilities":["_get_utility"],"QValues":["_get_utility","_get_q_value"],"ParallelSolver":[],"Policies":["_sample_action","_is_policy_defined_for"],"UncertainPolicies":["_get_next_action_distribution","_is_policy_defined_for"],"DeterministicPolicies":["_get_next_action","_is_policy_defined_for"],"Restorable":["_save","_load"],"solver":["_solve_domain"]}},"types":{"domain":{"MultiAgent":{"T_agent":"skdecide.core.StrDict"},"SingleAgent":{"T_agent":"typing.Union"},"Parallel":{"T_concurrency":"typing.List"},"Sequential":{"T_concurrency":"typing.Union"},"Constrained":{},"Environment":{},"Simulation":{},"UncertainTransitions":{},"EnumerableTransitions":{},"DeterministicTransitions":{},"Events":{},"Actions":{},"UnrestrictedActions":{},"Goals":{},"Initializable":{},"UncertainInitialized":{},"DeterministicInitialized":{},"History":{"T_memory":"skdecide.core.Memory"},"FiniteHistory":{"T_memory":"skdecide.core.Memory"},"Markovian":{"T_memory":"typing.Union"},"Memoryless":{"T_memory":"typing.Union"},"PartiallyObservable":{},"TransformedObservable":{},"FullyObservable":{},"Renderable":{},"Rewards":{},"PositiveCosts":{}},"solver":{"Utilities":{},"QValues":{},"ParallelSolver":{},"Policies":{},"UncertainPolicies":{},"DeterministicPolicies":{},"Restorable":{}}},"signatures":{"domain":{"get_constraints":{"params":[{"name":"self"}],"return":"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"},"_get_constraints":{"params":[{"name":"self"}],"return":"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"},"_get_constraints_":{"params":[{"name":"self"}],"return":"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"},"step":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"_step":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"_state_step":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"set_memory":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"None"},"_set_memory":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"None"},"sample":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"_sample":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"_state_sample":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"get_next_state_distribution":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"DiscreteDistribution[D.T_state]"},"_get_next_state_distribution":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"SingleValueDistribution[D.T_state]"},"get_transition_value":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"},{"name":"next_state","default":"None","annotation":"Optional[D.T_state]"}],"return":"D.T_agent[Value[D.T_value]]"},"_get_transition_value":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"},{"name":"next_state","default":"None","annotation":"Optional[D.T_state]"}],"return":"D.T_agent[Value[D.T_value]]"},"is_transition_value_dependent_on_next_state":{"params":[{"name":"self"}],"return":"bool"},"_is_transition_value_dependent_on_next_state":{"params":[{"name":"self"}],"return":"bool"},"_is_transition_value_dependent_on_next_state_":{"params":[{"name":"self"}],"return":"bool"},"is_terminal":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"}],"return":"D.T_agent[D.T_predicate]"},"_is_terminal":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"}],"return":"D.T_agent[D.T_predicate]"},"get_next_state":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"D.T_state"},"_get_next_state":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"D.T_state"},"get_enabled_events":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"Space[D.T_event]"},"_get_enabled_events":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"Space[D.T_event]"},"_get_enabled_events_from":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"Space[D.T_event]"},"is_enabled_event":{"params":[{"name":"self"},{"name":"event","annotation":"D.T_event"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"bool"},"_is_enabled_event":{"params":[{"name":"self"},{"name":"event","annotation":"D.T_event"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"bool"},"_is_enabled_event_from":{"params":[{"name":"self"},{"name":"event","annotation":"D.T_event"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"bool"},"get_action_space":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_event]]"},"_get_action_space":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_event]]"},"_get_action_space_":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_event]]"},"is_action":{"params":[{"name":"self"},{"name":"event","annotation":"D.T_event"}],"return":"bool"},"_is_action":{"params":[{"name":"self"},{"name":"event","annotation":"D.T_event"}],"return":"bool"},"get_applicable_actions":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"D.T_agent[Space[D.T_event]]"},"_get_applicable_actions":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"D.T_agent[Space[D.T_event]]"},"_get_applicable_actions_from":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"D.T_agent[Space[D.T_event]]"},"is_applicable_action":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_event]"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"bool"},"_is_applicable_action":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_event]"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"bool"},"_is_applicable_action_from":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_event]"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"bool"},"get_goals":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"_get_goals":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"_get_goals_":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"is_goal":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_predicate]"},"_is_goal":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_predicate]"},"reset":{"params":[{"name":"self"}],"return":"D.T_agent[D.T_observation]"},"_reset":{"params":[{"name":"self"}],"return":"D.T_agent[D.T_observation]"},"_state_reset":{"params":[{"name":"self"}],"return":"D.T_state"},"get_initial_state_distribution":{"params":[{"name":"self"}],"return":"Distribution[D.T_state]"},"_get_initial_state_distribution":{"params":[{"name":"self"}],"return":"Distribution[D.T_state]"},"_get_initial_state_distribution_":{"params":[{"name":"self"}],"return":"Distribution[D.T_state]"},"get_initial_state":{"params":[{"name":"self"}],"return":"D.T_state"},"_get_initial_state":{"params":[{"name":"self"}],"return":"D.T_state"},"_get_initial_state_":{"params":[{"name":"self"}],"return":"D.T_state"},"_init_memory":{"params":[{"name":"self"},{"name":"state","default":"None","annotation":"Optional[D.T_state]"}],"return":"D.T_memory[D.T_state]"},"_get_memory_maxlen":{"params":[{"name":"self"}],"return":"int"},"_get_memory_maxlen_":{"params":[{"name":"self"}],"return":"int"},"get_observation_space":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"_get_observation_space":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"_get_observation_space_":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"is_observation":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"bool"},"_is_observation":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"bool"},"get_observation_distribution":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"},{"name":"action","default":"None","annotation":"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],"return":"Distribution[D.T_agent[D.T_observation]]"},"_get_observation_distribution":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"},{"name":"action","default":"None","annotation":"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],"return":"Distribution[D.T_agent[D.T_observation]]"},"get_observation":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"},{"name":"action","default":"None","annotation":"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],"return":"D.T_agent[D.T_observation]"},"_get_observation":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"},{"name":"action","default":"None","annotation":"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],"return":"D.T_agent[D.T_observation]"},"render":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"},{"name":"**kwargs","annotation":"Any"}],"return":"Any"},"_render":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"},{"name":"**kwargs","annotation":"Any"}],"return":"Any"},"_render_from":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"**kwargs","annotation":"Any"}],"return":"Any"},"check_value":{"params":[{"name":"self"},{"name":"value","annotation":"Value[D.T_value]"}],"return":"bool"},"_check_value":{"params":[{"name":"self"},{"name":"value","annotation":"Value[D.T_value]"}],"return":"bool"},"_is_positive":{"params":[{"name":"self"},{"name":"cost","annotation":"D.T_value"}],"return":"bool"}},"solver":{"get_utility":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_value"},"_get_utility":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_value"},"get_q_value":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"D.T_value"},"_get_q_value":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"D.T_value"},"ParallelSolver":{"params":[{"name":"domain_factory","annotation":"Callable[[], Domain]"},{"name":"parallel","default":"False","annotation":"bool"},{"name":"shared_memory_proxy","default":"None"}]},"_initialize":{"params":[{"name":"self"}]},"close":{"params":[{"name":"self"}]},"get_domain":{"params":[{"name":"self"}]},"call_domain_method":{"params":[{"name":"self"},{"name":"name"},{"name":"*args"}]},"sample_action":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_concurrency[D.T_event]]"},"_sample_action":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_concurrency[D.T_event]]"},"is_policy_defined_for":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"bool"},"_is_policy_defined_for":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"bool"},"get_next_action_distribution":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"},"_get_next_action_distribution":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"},"get_next_action":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_concurrency[D.T_event]]"},"_get_next_action":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_concurrency[D.T_event]]"},"save":{"params":[{"name":"self"},{"name":"path","annotation":"str"}],"return":"None"},"_save":{"params":[{"name":"self"},{"name":"path","annotation":"str"}],"return":"None"},"load":{"params":[{"name":"self"},{"name":"path","annotation":"str"},{"name":"domain_factory","annotation":"Callable[[], D]"}],"return":"None"},"_load":{"params":[{"name":"self"},{"name":"path","annotation":"str"},{"name":"domain_factory","annotation":"Callable[[], D]"}],"return":"None"},"_solve_domain":{"params":[{"name":"self"},{"name":"domain_factory","annotation":"Callable[[], D]"}],"return":"None"}}},"objects":{"Space":"/reference/_skdecide.core.html#space","ImplicitSpace":"/reference/_skdecide.core.html#implicitspace","EnumerableSpace":"/reference/_skdecide.core.html#enumerablespace","EmptySpace":"/reference/_skdecide.core.html#emptyspace","SamplableSpace":"/reference/_skdecide.core.html#samplablespace","SerializableSpace":"/reference/_skdecide.core.html#serializablespace","Distribution":"/reference/_skdecide.core.html#distribution","ImplicitDistribution":"/reference/_skdecide.core.html#implicitdistribution","DiscreteDistribution":"/reference/_skdecide.core.html#discretedistribution","SingleValueDistribution":"/reference/_skdecide.core.html#singlevaluedistribution","Value":"/reference/_skdecide.core.html#value","EnvironmentOutcome":"/reference/_skdecide.core.html#environmentoutcome","TransitionOutcome":"/reference/_skdecide.core.html#transitionoutcome","StrDict":"/reference/_skdecide.core.html#strdict","Constraint":"/reference/_skdecide.core.html#constraint","ImplicitConstraint":"/reference/_skdecide.core.html#implicitconstraint","BoundConstraint":"/reference/_skdecide.core.html#boundconstraint"}}')},function(e,t,i){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=n=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),n(t)}i(42),i(52),i(14),i(82),i(18),i(23),e.exports=n,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,i){"use strict";var n=i(1),r=i(104).indexOf,s=i(40),a=[].indexOf,o=!!a&&1/[1].indexOf(1,-0)<0,l=s("indexOf");n({target:"Array",proto:!0,forced:o||!l},{indexOf:function(e){return o?a.apply(this,arguments)||0:r(this,e,arguments.length>1?arguments[1]:void 0)}})},function(e,t,i){var n=i(8),r=i(34),s=i(4)("match");e.exports=function(e){var t;return n(e)&&(void 0!==(t=e[s])?!!t:"RegExp"==r(e))}},function(e,t,i){var n=i(2),r=i(3).RegExp;t.UNSUPPORTED_Y=n((function(){var e=r("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=n((function(){var e=r("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},function(e,t,i){"use strict";i(56);var n=i(13),r=i(97),s=i(2),a=i(4),o=i(32),l=a("species"),u=RegExp.prototype;e.exports=function(e,t,i,c){var d=a(e),h=!s((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),p=h&&!s((function(){var t=!1,i=/a/;return"split"===e&&((i={}).constructor={},i.constructor[l]=function(){return i},i.flags="",i[d]=/./[d]),i.exec=function(){return t=!0,null},i[d](""),!t}));if(!h||!p||i){var f=/./[d],m=t(d,""[e],(function(e,t,i,n,s){var a=t.exec;return a===r||a===u.exec?h&&!s?{done:!0,value:f.call(t,i,n)}:{done:!0,value:e.call(i,t,n)}:{done:!1}}));n(String.prototype,e,m[0]),n(u,d,m[1])}c&&o(u[d],"sham",!0)}},function(e,t,i){"use strict";var n=i(162).charAt;e.exports=function(e,t,i){return t+(i?n(e,t).length:1)}},function(e,t,i){var n=i(9),r=i(5),s=i(34),a=i(97);e.exports=function(e,t){var i=e.exec;if(r(i)){var o=i.call(e,t);return null!==o&&n(o),o}if("RegExp"===s(e))return a.call(e,t);throw TypeError("RegExp#exec called on incompatible receiver")}},function(e,t,i){"use strict";var n=i(1),r=i(47),s=i(16),a=i(40),o=[].join,l=r!=Object,u=a("join",",");n({target:"Array",proto:!0,forced:l||!u},{join:function(e){return o.call(s(this),void 0===e?",":e)}})},function(e,t,i){"use strict";var n,r=i(1),s=i(26).f,a=i(21),o=i(20),l=i(135),u=i(28),c=i(136),d=i(30),h="".startsWith,p=Math.min,f=c("startsWith");r({target:"String",proto:!0,forced:!!(d||f||(n=s(String.prototype,"startsWith"),!n||n.writable))&&!f},{startsWith:function(e){var t=o(u(this));l(e);var i=a(p(arguments.length>1?arguments[1]:void 0,t.length)),n=o(e);return h?h.call(t,n,i):t.slice(i,i+n.length)===n}})},function(e,t,i){var n=i(28),r=i(20),s="["+i(224)+"]",a=RegExp("^"+s+s+"*"),o=RegExp(s+s+"*$"),l=function(e){return function(t){var i=r(n(t));return 1&e&&(i=i.replace(a,"")),2&e&&(i=i.replace(o,"")),i}};e.exports={start:l(1),end:l(2),trim:l(3)}},function(e,t){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},function(e,t,i){"use strict";var n=i(62).PROPER,r=i(13),s=i(9),a=i(20),o=i(2),l=i(137),u=RegExp.prototype,c=u.toString,d=o((function(){return"/a/b"!=c.call({source:"a",flags:"b"})})),h=n&&"toString"!=c.name;(d||h)&&r(RegExp.prototype,"toString",(function(){var e=s(this),t=a(e.source),i=e.flags;return"/"+t+"/"+a(void 0===i&&e instanceof RegExp&&!("flags"in u)?l.call(e):i)}),{unsafe:!0})},function(e,t,i){"use strict";var n=i(17),r=i(11),s=i(4),a=i(7),o=s("species");e.exports=function(e){var t=n(e),i=r.f;a&&t&&!t[o]&&i(t,o,{configurable:!0,get:function(){return this}})}},function(e,t,i){var n=i(2),r=i(3).RegExp;e.exports=n((function(){var e=r(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)}))},function(e,t,i){var n=i(2),r=i(3).RegExp;e.exports=n((function(){var e=r("(?b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))},function(e,t,i){"use strict";var n=i(1),r=i(104).includes,s=i(99);n({target:"Array",proto:!0},{includes:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),s("includes")},function(e,t,i){"use strict";var n=i(1),r=i(135),s=i(28),a=i(20);n({target:"String",proto:!0,forced:!i(136)("includes")},{includes:function(e){return!!~a(s(this)).indexOf(a(r(e)),arguments.length>1?arguments[1]:void 0)}})},function(e,t,i){var n=i(194);e.exports=function(e,t,i){var r=null==e?void 0:n(e,t);return void 0===r?i:r}},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,i){var n=i(7),r=i(48),s=i(16),a=i(72).f,o=function(e){return function(t){for(var i,o=s(t),l=r(o),u=l.length,c=0,d=[];u>c;)i=l[c++],n&&!a.call(o,i)||d.push(e?[i,o[i]]:o[i]);return d}};e.exports={entries:o(!0),values:o(!1)}},function(e,t,i){var n=i(5),r=i(8),s=i(74);e.exports=function(e,t,i){var a,o;return s&&n(a=t.constructor)&&a!==i&&r(o=a.prototype)&&o!==i.prototype&&s(e,o),e}},function(e,t,i){e.exports=i(421)},function(e,t,i){var n=i(5),r=i(8);e.exports=function(e,t){var i,s;if("string"===t&&n(i=e.toString)&&!r(s=i.call(e)))return s;if(n(i=e.valueOf)&&!r(s=i.call(e)))return s;if("string"!==t&&n(i=e.toString)&&!r(s=i.call(e)))return s;throw TypeError("Can't convert object to primitive value")}},function(e,t,i){var n=i(3),r=i(5),s=i(71),a=n.WeakMap;e.exports=r(a)&&/native code/.test(s(a))},function(e,t,i){"use strict";var n=i(150).IteratorPrototype,r=i(27),s=i(51),a=i(73),o=i(50),l=function(){return this};e.exports=function(e,t,i){var u=t+" Iterator";return e.prototype=r(n,{next:s(1,i)}),a(e,u,!1,!0),o[u]=l,e}},function(e,t,i){var n=i(5);e.exports=function(e){if("object"==typeof e||n(e))return e;throw TypeError("Can't set "+String(e)+" as a prototype")}},function(e,t,i){"use strict";var n,r,s,a,o=i(1),l=i(30),u=i(3),c=i(17),d=i(152),h=i(13),p=i(241),f=i(74),m=i(73),v=i(226),g=i(31),_=i(5),b=i(8),y=i(242),x=i(71),k=i(243),w=i(156),C=i(131),S=i(158).set,O=i(244),D=i(160),E=i(247),T=i(161),$=i(248),P=i(39),j=i(100),M=i(4),I=i(249),A=i(78),N=i(44),L=M("species"),F="Promise",V=P.get,z=P.set,R=P.getterFor(F),B=d&&d.prototype,H=d,W=B,q=u.TypeError,U=u.document,G=u.process,Y=T.f,K=Y,X=!!(U&&U.createEvent&&u.dispatchEvent),Z=_(u.PromiseRejectionEvent),Q=!1,J=j(F,(function(){var e=x(H),t=e!==String(H);if(!t&&66===N)return!0;if(l&&!W.finally)return!0;if(N>=51&&/native code/.test(e))return!1;var i=new H((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};return(i.constructor={})[L]=n,!(Q=i.then((function(){}))instanceof n)||!t&&I&&!Z})),ee=J||!w((function(e){H.all(e).catch((function(){}))})),te=function(e){var t;return!(!b(e)||!_(t=e.then))&&t},ie=function(e,t){if(!e.notified){e.notified=!0;var i=e.reactions;O((function(){for(var n=e.value,r=1==e.state,s=0;i.length>s;){var a,o,l,u=i[s++],c=r?u.ok:u.fail,d=u.resolve,h=u.reject,p=u.domain;try{c?(r||(2===e.rejection&&ae(e),e.rejection=1),!0===c?a=n:(p&&p.enter(),a=c(n),p&&(p.exit(),l=!0)),a===u.promise?h(q("Promise-chain cycle")):(o=te(a))?o.call(a,d,h):d(a)):h(n)}catch(e){p&&!l&&p.exit(),h(e)}}e.reactions=[],e.notified=!1,t&&!e.rejection&&re(e)}))}},ne=function(e,t,i){var n,r;X?((n=U.createEvent("Event")).promise=t,n.reason=i,n.initEvent(e,!1,!0),u.dispatchEvent(n)):n={promise:t,reason:i},!Z&&(r=u["on"+e])?r(n):"unhandledrejection"===e&&E("Unhandled promise rejection",i)},re=function(e){S.call(u,(function(){var t,i=e.facade,n=e.value;if(se(e)&&(t=$((function(){A?G.emit("unhandledRejection",n,i):ne("unhandledrejection",i,n)})),e.rejection=A||se(e)?2:1,t.error))throw t.value}))},se=function(e){return 1!==e.rejection&&!e.parent},ae=function(e){S.call(u,(function(){var t=e.facade;A?G.emit("rejectionHandled",t):ne("rejectionhandled",t,e.value)}))},oe=function(e,t,i){return function(n){e(t,n,i)}},le=function(e,t,i){e.done||(e.done=!0,i&&(e=i),e.value=t,e.state=2,ie(e,!0))},ue=function(e,t,i){if(!e.done){e.done=!0,i&&(e=i);try{if(e.facade===t)throw q("Promise can't be resolved itself");var n=te(t);n?O((function(){var i={done:!1};try{n.call(t,oe(ue,i,e),oe(le,i,e))}catch(t){le(i,t,e)}})):(e.value=t,e.state=1,ie(e,!1))}catch(t){le({done:!1},t,e)}}};if(J&&(W=(H=function(e){y(this,H,F),g(e),n.call(this);var t=V(this);try{e(oe(ue,t),oe(le,t))}catch(e){le(t,e)}}).prototype,(n=function(e){z(this,{type:F,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=p(W,{then:function(e,t){var i=R(this),n=Y(C(this,H));return n.ok=!_(e)||e,n.fail=_(t)&&t,n.domain=A?G.domain:void 0,i.parent=!0,i.reactions.push(n),0!=i.state&&ie(i,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),r=function(){var e=new n,t=V(e);this.promise=e,this.resolve=oe(ue,t),this.reject=oe(le,t)},T.f=Y=function(e){return e===H||e===s?new r(e):K(e)},!l&&_(d)&&B!==Object.prototype)){a=B.then,Q||(h(B,"then",(function(e,t){var i=this;return new H((function(e,t){a.call(i,e,t)})).then(e,t)}),{unsafe:!0}),h(B,"catch",W.catch,{unsafe:!0}));try{delete B.constructor}catch(e){}f&&f(B,W)}o({global:!0,wrap:!0,forced:J},{Promise:H}),m(H,F,!1,!0),v(F),s=c(F),o({target:F,stat:!0,forced:J},{reject:function(e){var t=Y(this);return t.reject.call(void 0,e),t.promise}}),o({target:F,stat:!0,forced:l||J},{resolve:function(e){return D(l&&this===s?H:this,e)}}),o({target:F,stat:!0,forced:ee},{all:function(e){var t=this,i=Y(t),n=i.resolve,r=i.reject,s=$((function(){var i=g(t.resolve),s=[],a=0,o=1;k(e,(function(e){var l=a++,u=!1;s.push(void 0),o++,i.call(t,e).then((function(e){u||(u=!0,s[l]=e,--o||n(s))}),r)})),--o||n(s)}));return s.error&&r(s.value),i.promise},race:function(e){var t=this,i=Y(t),n=i.reject,r=$((function(){var r=g(t.resolve);k(e,(function(e){r.call(t,e).then(i.resolve,n)}))}));return r.error&&n(r.value),i.promise}})},function(e,t,i){var n=i(13);e.exports=function(e,t,i){for(var r in t)n(e,r,t[r],i);return e}},function(e,t){e.exports=function(e,t,i){if(e instanceof t)return e;throw TypeError("Incorrect "+(i?i+" ":"")+"invocation")}},function(e,t,i){var n=i(9),r=i(153),s=i(21),a=i(75),o=i(154),l=i(108),u=i(155),c=function(e,t){this.stopped=e,this.result=t};e.exports=function(e,t,i){var d,h,p,f,m,v,g,_=i&&i.that,b=!(!i||!i.AS_ENTRIES),y=!(!i||!i.IS_ITERATOR),x=!(!i||!i.INTERRUPTED),k=a(t,_,1+b+x),w=function(e){return d&&u(d,"normal",e),new c(!0,e)},C=function(e){return b?(n(e),x?k(e[0],e[1],w):k(e[0],e[1])):x?k(e,w):k(e)};if(y)d=e;else{if(!(h=l(e)))throw TypeError(String(e)+" is not iterable");if(r(h)){for(p=0,f=s(e.length);f>p;p++)if((m=C(e[p]))&&m instanceof c)return m;return new c(!1)}d=o(e,h)}for(v=d.next;!(g=v.call(d)).done;){try{m=C(g.value)}catch(e){u(d,"throw",e)}if("object"==typeof m&&m&&m instanceof c)return m}return new c(!1)}},function(e,t,i){var n,r,s,a,o,l,u,c,d=i(3),h=i(26).f,p=i(158).set,f=i(159),m=i(245),v=i(246),g=i(78),_=d.MutationObserver||d.WebKitMutationObserver,b=d.document,y=d.process,x=d.Promise,k=h(d,"queueMicrotask"),w=k&&k.value;w||(n=function(){var e,t;for(g&&(e=y.domain)&&e.exit();r;){t=r.fn,r=r.next;try{t()}catch(e){throw r?a():s=void 0,e}}s=void 0,e&&e.enter()},f||g||v||!_||!b?!m&&x&&x.resolve?((u=x.resolve(void 0)).constructor=x,c=u.then,a=function(){c.call(u,n)}):a=g?function(){y.nextTick(n)}:function(){p.call(d,n)}:(o=!0,l=b.createTextNode(""),new _(n).observe(l,{characterData:!0}),a=function(){l.data=o=!o})),e.exports=w||function(e){var t={fn:e,next:void 0};s&&(s.next=t),r||(r=t,a()),s=t}},function(e,t,i){var n=i(60),r=i(3);e.exports=/ipad|iphone|ipod/i.test(n)&&void 0!==r.Pebble},function(e,t,i){var n=i(60);e.exports=/web0s(?!.*chrome)/i.test(n)},function(e,t,i){var n=i(3);e.exports=function(e,t){var i=n.console;i&&i.error&&(1===arguments.length?i.error(e):i.error(e,t))}},function(e,t){e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},function(e,t){e.exports="object"==typeof window},function(e,t,i){var n=i(1),r=i(251);n({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},function(e,t,i){"use strict";var n=i(7),r=i(2),s=i(48),a=i(106),o=i(72),l=i(15),u=i(47),c=Object.assign,d=Object.defineProperty;e.exports=!c||r((function(){if(n&&1!==c({b:1},c(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},i=Symbol();return e[i]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=c({},e)[i]||"abcdefghijklmnopqrst"!=s(c({},t)).join("")}))?function(e,t){for(var i=l(e),r=arguments.length,c=1,d=a.f,h=o.f;r>c;)for(var p,f=u(arguments[c++]),m=d?s(f).concat(d(f)):s(f),v=m.length,g=0;v>g;)p=m[g++],n&&!h.call(f,p)||(i[p]=f[p]);return i}:c},function(e,t,i){"use strict";var n=i(1),r=i(30),s=i(152),a=i(2),o=i(17),l=i(5),u=i(131),c=i(160),d=i(13);if(n({target:"Promise",proto:!0,real:!0,forced:!!s&&a((function(){s.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=u(this,o("Promise")),i=l(e);return this.then(i?function(i){return c(t,e()).then((function(){return i}))}:e,i?function(i){return c(t,e()).then((function(){throw i}))}:e)}}),!r&&l(s)){var h=o("Promise").prototype.finally;s.prototype.finally!==h&&d(s.prototype,"finally",h,{unsafe:!0})}},function(e,t,i){"use strict";var n=i(109),r=i(76);e.exports=n?{}.toString:function(){return"[object "+r(this)+"]"}},function(e,t,i){var n=i(43),r=i(77),s=i(8),a=i(4)("species");e.exports=function(e){var t;return n(e)&&(t=e.constructor,(r(t)&&(t===Array||n(t.prototype))||s(t)&&null===(t=t[a]))&&(t=void 0)),void 0===t?Array:t}},function(e,t,i){"use strict";var n=i(1),r=i(256).left,s=i(40),a=i(44),o=i(78);n({target:"Array",proto:!0,forced:!s("reduce")||!o&&a>79&&a<83},{reduce:function(e){return r(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(e,t,i){var n=i(31),r=i(15),s=i(47),a=i(21),o=function(e){return function(t,i,o,l){n(i);var u=r(t),c=s(u),d=a(u.length),h=e?d-1:0,p=e?-1:1;if(o<2)for(;;){if(h in c){l=c[h],h+=p;break}if(h+=p,e?h<0:d<=h)throw TypeError("Reduce of empty array with no initial value")}for(;e?h>=0:d>h;h+=p)h in c&&(l=i(l,c[h],h,u));return l}};e.exports={left:o(!1),right:o(!0)}},function(e,t,i){var n=i(1),r=i(169),s=i(2),a=i(8),o=i(258).onFreeze,l=Object.freeze;n({target:"Object",stat:!0,forced:s((function(){l(1)})),sham:!r},{freeze:function(e){return l&&a(e)?l(o(e)):e}})},function(e,t,i){var n=i(1),r=i(49),s=i(8),a=i(10),o=i(11).f,l=i(45),u=i(170),c=i(65),d=i(169),h=!1,p=c("meta"),f=0,m=Object.isExtensible||function(){return!0},v=function(e){o(e,p,{value:{objectID:"O"+f++,weakData:{}}})},g=e.exports={enable:function(){g.enable=function(){},h=!0;var e=l.f,t=[].splice,i={};i[p]=1,e(i).length&&(l.f=function(i){for(var n=e(i),r=0,s=n.length;r1?arguments[1]:void 0,f=void 0!==p;f&&(p=n(p,h>2?arguments[2]:void 0,2));var m,v,g,_,b,y,x=d(t),k=0;if(!x||this==Array&&a(x))for(m=l(t.length),v=i?new this(m):Array(m);m>k;k++)y=f?p(t[k],k):t[k],u(v,k,y);else for(b=(_=c(t,x)).next,v=i?new this:[];!(g=b.call(_)).done;k++)y=f?s(_,p,[g.value,k],!0):g.value,u(v,k,y);return v.length=k,v}},function(e,t,i){var n=i(9),r=i(155);e.exports=function(e,t,i,s){try{return s?t(n(i)[0],i[1]):t(i)}catch(t){r(e,"throw",t)}}},function(e,t,i){var n=i(15),r=Math.floor,s="".replace,a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,o=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,i,l,u,c){var d=i+e.length,h=l.length,p=o;return void 0!==u&&(u=n(u),p=a),s.call(c,p,(function(n,s){var a;switch(s.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,i);case"'":return t.slice(d);case"<":a=u[s.slice(1,-1)];break;default:var o=+s;if(0===o)return n;if(o>h){var c=r(o/10);return 0===c?n:c<=h?void 0===l[c-1]?s.charAt(1):l[c-1]+s.charAt(1):n}a=l[o-1]}return void 0===a?"":a}))}},function(e,t,i){var n=i(175),r=i(264);e.exports=function e(t,i,s,a,o){var l=-1,u=t.length;for(s||(s=r),o||(o=[]);++l0&&s(c)?i>1?e(c,i-1,s,a,o):n(o,c):a||(o[o.length]=c)}return o}},function(e,t,i){var n=i(53),r=i(110),s=i(22),a=n?n.isConcatSpreadable:void 0;e.exports=function(e){return s(e)||r(e)||!!(a&&e&&e[a])}},function(e,t,i){var n=i(46),r=i(41);e.exports=function(e){return r(e)&&"[object Arguments]"==n(e)}},function(e,t,i){var n=i(53),r=Object.prototype,s=r.hasOwnProperty,a=r.toString,o=n?n.toStringTag:void 0;e.exports=function(e){var t=s.call(e,o),i=e[o];try{e[o]=void 0;var n=!0}catch(e){}var r=a.call(e);return n&&(t?e[o]=i:delete e[o]),r}},function(e,t){var i=Object.prototype.toString;e.exports=function(e){return i.call(e)}},function(e,t,i){var n=i(269),r=i(325),s=i(118),a=i(22),o=i(335);e.exports=function(e){return"function"==typeof e?e:null==e?s:"object"==typeof e?a(e)?r(e[0],e[1]):n(e):o(e)}},function(e,t,i){var n=i(270),r=i(324),s=i(193);e.exports=function(e){var t=r(e);return 1==t.length&&t[0][2]?s(t[0][0],t[0][1]):function(i){return i===e||n(i,e,t)}}},function(e,t,i){var n=i(177),r=i(181);e.exports=function(e,t,i,s){var a=i.length,o=a,l=!s;if(null==e)return!o;for(e=Object(e);a--;){var u=i[a];if(l&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++a-1}},function(e,t,i){var n=i(84);e.exports=function(e,t){var i=this.__data__,r=n(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this}},function(e,t,i){var n=i(83);e.exports=function(){this.__data__=new n,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,i){var n=i(83),r=i(111),s=i(113);e.exports=function(e,t){var i=this.__data__;if(i instanceof n){var a=i.__data__;if(!r||a.length<199)return a.push([e,t]),this.size=++i.size,this;i=this.__data__=new s(a)}return i.set(e,t),this.size=i.size,this}},function(e,t,i){var n=i(179),r=i(282),s=i(112),a=i(180),o=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,d=u.hasOwnProperty,h=RegExp("^"+c.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!s(e)||r(e))&&(n(e)?h:o).test(a(e))}},function(e,t,i){var n,r=i(283),s=(n=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";e.exports=function(e){return!!s&&s in e}},function(e,t,i){var n=i(24)["__core-js_shared__"];e.exports=n},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,i){var n=i(286),r=i(83),s=i(111);e.exports=function(){this.size=0,this.__data__={hash:new n,map:new(s||r),string:new n}}},function(e,t,i){var n=i(287),r=i(288),s=i(289),a=i(290),o=i(291);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,i){var n=i(183),r=i(347),s=i(352),a=i(184),o=i(353),l=i(114);e.exports=function(e,t,i){var u=-1,c=r,d=e.length,h=!0,p=[],f=p;if(i)h=!1,c=s;else if(d>=200){var m=t?null:o(e);if(m)return l(m);h=!1,c=a,f=new n}else f=t?[]:p;e:for(;++u-1}},function(e,t,i){var n=i(349),r=i(350),s=i(351);e.exports=function(e,t,i){return t==t?s(e,t,i):n(e,r,i)}},function(e,t){e.exports=function(e,t,i,n){for(var r=e.length,s=i+(n?1:-1);n?s--:++s1?arguments[1]:void 0)}}),s("findIndex")},function(e,t,i){var n=i(1),r=i(233).values;n({target:"Object",stat:!0},{values:function(e){return r(e)}})},function(e,t,i){"use strict";t.__esModule=!0,t.validateRangeInOneMonth=t.extractTimeFormat=t.extractDateFormat=t.nextYear=t.prevYear=t.nextMonth=t.prevMonth=t.changeYearMonthAndClampDate=t.timeWithinRange=t.limitTimeRange=t.clearMilliseconds=t.clearTime=t.modifyWithTimeString=t.modifyTime=t.modifyDate=t.range=t.getRangeMinutes=t.getMonthDays=t.getPrevMonthLastDays=t.getRangeHours=t.getWeekNumber=t.getStartDateOfMonth=t.nextDate=t.prevDate=t.getFirstDayOfMonth=t.getDayCountOfYear=t.getDayCountOfMonth=t.parseDate=t.formatDate=t.isDateObject=t.isDate=t.toDate=t.getI18nSettings=void 0;var n,r=i(196),s=(n=r)&&n.__esModule?n:{default:n},a=i(120);var o=["sun","mon","tue","wed","thu","fri","sat"],l=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],u=t.getI18nSettings=function(){return{dayNamesShort:o.map((function(e){return(0,a.t)("el.datepicker.weeks."+e)})),dayNames:o.map((function(e){return(0,a.t)("el.datepicker.weeks."+e)})),monthNamesShort:l.map((function(e){return(0,a.t)("el.datepicker.months."+e)})),monthNames:l.map((function(e,t){return(0,a.t)("el.datepicker.month"+(t+1))})),amPm:["am","pm"]}},c=t.toDate=function(e){return d(e)?new Date(e):null},d=t.isDate=function(e){return null!=e&&(!isNaN(new Date(e).getTime())&&!Array.isArray(e))},h=(t.isDateObject=function(e){return e instanceof Date},t.formatDate=function(e,t){return(e=c(e))?s.default.format(e,t||"yyyy-MM-dd",u()):""},t.parseDate=function(e,t){return s.default.parse(e,t||"yyyy-MM-dd",u())}),p=t.getDayCountOfMonth=function(e,t){return 3===t||5===t||8===t||10===t?30:1===t?e%4==0&&e%100!=0||e%400==0?29:28:31},f=(t.getDayCountOfYear=function(e){return e%400==0||e%100!=0&&e%4==0?366:365},t.getFirstDayOfMonth=function(e){var t=new Date(e.getTime());return t.setDate(1),t.getDay()},t.prevDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()-t)});t.nextDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)},t.getStartDateOfMonth=function(e,t){var i=new Date(e,t,1),n=i.getDay();return f(i,0===n?7:n)},t.getWeekNumber=function(e){if(!d(e))return null;var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var i=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-i.getTime())/864e5-3+(i.getDay()+6)%7)/7)},t.getRangeHours=function(e){var t=[],i=[];if((e||[]).forEach((function(e){var t=e.map((function(e){return e.getHours()}));i=i.concat(function(e,t){for(var i=[],n=e;n<=t;n++)i.push(n);return i}(t[0],t[1]))})),i.length)for(var n=0;n<24;n++)t[n]=-1===i.indexOf(n);else for(var r=0;r<24;r++)t[r]=!1;return t},t.getPrevMonthLastDays=function(e,t){if(t<=0)return[];var i=new Date(e.getTime());i.setDate(0);var n=i.getDate();return v(t).map((function(e,i){return n-(t-i-1)}))},t.getMonthDays=function(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0).getDate();return v(t).map((function(e,t){return t+1}))};function m(e,t,i,n){for(var r=t;r0?e.forEach((function(e){var n=e[0],r=e[1],s=n.getHours(),a=n.getMinutes(),o=r.getHours(),l=r.getMinutes();s===t&&o!==t?m(i,a,60,!0):s===t&&o===t?m(i,a,l+1,!0):s!==t&&o===t?m(i,0,l+1,!0):st&&m(i,0,60,!0)})):m(i,0,60,!0),i};var v=t.range=function(e){return Array.apply(null,{length:e}).map((function(e,t){return t}))},g=t.modifyDate=function(e,t,i,n){return new Date(t,i,n,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())},_=t.modifyTime=function(e,t,i,n){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),t,i,n,e.getMilliseconds())},b=(t.modifyWithTimeString=function(e,t){return null!=e&&t?(t=h(t,"HH:mm:ss"),_(e,t.getHours(),t.getMinutes(),t.getSeconds())):e},t.clearTime=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},t.clearMilliseconds=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),0)},t.limitTimeRange=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"HH:mm:ss";if(0===t.length)return e;var n=function(e){return s.default.parse(s.default.format(e,i),i)},r=n(e),a=t.map((function(e){return e.map(n)}));if(a.some((function(e){return r>=e[0]&&r<=e[1]})))return e;var o=a[0][0],l=a[0][0];a.forEach((function(e){o=new Date(Math.min(e[0],o)),l=new Date(Math.max(e[1],o))}));var u=r1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return y(e,i-t,n)},t.nextYear=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return y(e,i+t,n)},t.extractDateFormat=function(e){return e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim()},t.extractTimeFormat=function(e){return e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g,"").trim()},t.validateRangeInOneMonth=function(e,t){return e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}},function(e,t,i){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"确定",clear:"清空"},datepicker:{now:"此刻",today:"今天",cancel:"取消",clear:"清空",confirm:"确定",selectDate:"选择日期",selectTime:"选择时间",startDate:"开始日期",startTime:"开始时间",endDate:"结束日期",endTime:"结束时间",prevYear:"前一年",nextYear:"后一年",prevMonth:"上个月",nextMonth:"下个月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},cascader:{noMatch:"无匹配数据",loading:"加载中",placeholder:"请选择",noData:"暂无数据"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页"},messagebox:{title:"提示",confirm:"确定",cancel:"取消",error:"输入的数据不合法!"},upload:{deleteTip:"按 delete 键可删除",delete:"删除",preview:"查看图片",continue:"继续上传"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计"},tree:{emptyText:"暂无数据"},transfer:{noMatch:"无匹配数据",noData:"无数据",titles:["列表 1","列表 2"],filterPlaceholder:"请输入搜索内容",noCheckedFormat:"共 {total} 项",hasCheckedFormat:"已选 {checked}/{total} 项"},image:{error:"加载失败"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"确定",cancelButtonText:"取消"},empty:{description:"暂无数据"}}}},function(e,t,i){"use strict";var n=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===r}(e)}(e)};var r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function s(e,t){var i;return t&&!0===t.clone&&n(e)?o((i=e,Array.isArray(i)?[]:{}),e,t):e}function a(e,t,i){var r=e.slice();return t.forEach((function(t,a){void 0===r[a]?r[a]=s(t,i):n(t)?r[a]=o(e[a],t,i):-1===e.indexOf(t)&&r.push(s(t,i))})),r}function o(e,t,i){var r=Array.isArray(t);return r===Array.isArray(e)?r?((i||{arrayMerge:a}).arrayMerge||a)(e,t,i):function(e,t,i){var r={};return n(e)&&Object.keys(e).forEach((function(t){r[t]=s(e[t],i)})),Object.keys(t).forEach((function(a){n(t[a])&&e[a]?r[a]=o(e[a],t[a],i):r[a]=s(t[a],i)})),r}(e,t,i):s(t,i)}o.all=function(e,t){if(!Array.isArray(e)||e.length<2)throw new Error("first argument should be an array with at least two elements");return e.reduce((function(e,i){return o(e,i,t)}))};var l=o;e.exports=l},function(e,t,i){"use strict";t.__esModule=!0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.default=function(e){return function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),a=1;a0){var n=t[t.length-1];if(n.id===e){if(n.modalClass)n.modalClass.trim().split(/\s+/).forEach((function(e){return(0,a.removeClass)(i,e)}));t.pop(),t.length>0&&(i.style.zIndex=t[t.length-1].zIndex)}else for(var r=t.length-1;r>=0;r--)if(t[r].id===e){t.splice(r,1);break}}0===t.length&&(this.modalFade&&(0,a.addClass)(i,"v-modal-leave"),setTimeout((function(){0===t.length&&(i.parentNode&&i.parentNode.removeChild(i),i.style.display="none",h.modalDom=void 0),(0,a.removeClass)(i,"v-modal-leave")}),200))}};Object.defineProperty(h,"zIndex",{configurable:!0,get:function(){return l||(u=u||(s.default.prototype.$ELEMENT||{}).zIndex||2e3,l=!0),u},set:function(e){u=e}});s.default.prototype.$isServer||window.addEventListener("keydown",(function(e){if(27===e.keyCode){var t=function(){if(!s.default.prototype.$isServer&&h.modalStack.length>0){var e=h.modalStack[h.modalStack.length-1];if(!e)return;return h.getInstance(e.id)}}();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction("cancel"):t.close())}})),t.default=h},function(e,t,i){"use strict";var n,r;"function"==typeof Symbol&&Symbol.iterator;void 0===(r="function"==typeof(n=function(){var e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function i(e,i,n){this._reference=e.jquery?e[0]:e,this.state={};var r=null==i,s=i&&"[object Object]"===Object.prototype.toString.call(i);return this._popper=r||s?this.parse(s?i:{}):i.jquery?i[0]:i,this._options=Object.assign({},t,n),this._options.modifiers=this._options.modifiers.map(function(e){if(-1===this._options.modifiersIgnored.indexOf(e))return"applyStyle"===e&&this._popper.setAttribute("x-placement",this._options.placement),this.modifiers[e]||e}.bind(this)),this.state.position=this._getPosition(this._popper,this._reference),c(this._popper,{position:this.state.position,top:0}),this.update(),this._setupEventListeners(),this}function n(t){var i=t.style.display,n=t.style.visibility;t.style.display="block",t.style.visibility="hidden",t.offsetWidth;var r=e.getComputedStyle(t),s=parseFloat(r.marginTop)+parseFloat(r.marginBottom),a=parseFloat(r.marginLeft)+parseFloat(r.marginRight),o={width:t.offsetWidth+a,height:t.offsetHeight+s};return t.style.display=i,t.style.visibility=n,o}function r(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,(function(e){return t[e]}))}function s(e){var t=Object.assign({},e);return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function a(e,t){var i,n=0;for(i in e){if(e[i]===t)return n;n++}return null}function o(t,i){return e.getComputedStyle(t,null)[i]}function l(t){var i=t.offsetParent;return i!==e.document.body&&i?i:e.document.documentElement}function u(t){var i=t.parentNode;return i?i===e.document?e.document.body.scrollTop||e.document.body.scrollLeft?e.document.body:e.document.documentElement:-1!==["scroll","auto"].indexOf(o(i,"overflow"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-x"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-y"))?i:u(t.parentNode):t}function c(e,t){Object.keys(t).forEach((function(i){var n,r="";-1!==["width","height","top","right","bottom","left"].indexOf(i)&&""!==(n=t[i])&&!isNaN(parseFloat(n))&&isFinite(n)&&(r="px"),e.style[i]=t[i]+r}))}function d(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.offsetLeft,top:e.offsetTop};return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function h(e){var t=e.getBoundingClientRect(),i=-1!=navigator.userAgent.indexOf("MSIE")&&"HTML"===e.tagName?-e.scrollTop:t.top;return{left:t.left,top:i,right:t.right,bottom:t.bottom,width:t.right-t.left,height:t.bottom-i}}function p(t){for(var i=["","ms","webkit","moz","o"],n=0;n1&&console.warn("WARNING: the given `parent` query("+t.parent+") matched more than one element, the first one will be used"),0===a.length)throw"ERROR: the given `parent` doesn't exists!";a=a[0]}return a.length>1&&a instanceof Element==0&&(console.warn("WARNING: you have passed as parent a list of elements, the first one will be used"),a=a[0]),a.appendChild(r),r;function o(e,t){t.forEach((function(t){e.classList.add(t)}))}function l(e,t){t.forEach((function(t){e.setAttribute(t.split(":")[0],t.split(":")[1]||"")}))}},i.prototype._getPosition=function(t,i){return l(i),this._options.forceAbsolute?"absolute":function t(i){return i!==e.document.body&&("fixed"===o(i,"position")||(i.parentNode?t(i.parentNode):i))}(i)?"fixed":"absolute"},i.prototype._getOffsets=function(e,t,i){i=i.split("-")[0];var r={};r.position=this.state.position;var s="fixed"===r.position,a=function(e,t,i){var n=h(e),r=h(t);if(i){var s=u(t);r.top+=s.scrollTop,r.bottom+=s.scrollTop,r.left+=s.scrollLeft,r.right+=s.scrollLeft}return{top:n.top-r.top,left:n.left-r.left,bottom:n.top-r.top+n.height,right:n.left-r.left+n.width,width:n.width,height:n.height}}(t,l(e),s),o=n(e);return-1!==["right","left"].indexOf(i)?(r.top=a.top+a.height/2-o.height/2,r.left="left"===i?a.left-o.width:a.right):(r.left=a.left+a.width/2-o.width/2,r.top="top"===i?a.top-o.height:a.bottom),r.width=o.width,r.height=o.height,{popper:r,reference:a}},i.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement){var t=u(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener("scroll",this.state.updateBound),this.state.scrollTarget=t}},i.prototype._removeEventListeners=function(){e.removeEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener("scroll",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},i.prototype._getBoundaries=function(t,i,n){var r,s,a={};if("window"===n){var o=e.document.body,c=e.document.documentElement;r=Math.max(o.scrollHeight,o.offsetHeight,c.clientHeight,c.scrollHeight,c.offsetHeight),a={top:0,right:Math.max(o.scrollWidth,o.offsetWidth,c.clientWidth,c.scrollWidth,c.offsetWidth),bottom:r,left:0}}else if("viewport"===n){var h=l(this._popper),p=u(this._popper),f=d(h),m="fixed"===t.offsets.popper.position?0:(s=p)==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):s.scrollTop,v="fixed"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft}(p);a={top:0-(f.top-m),right:e.document.documentElement.clientWidth-(f.left-v),bottom:e.document.documentElement.clientHeight-(f.top-m),left:0-(f.left-v)}}else a=l(this._popper)===n?{top:0,left:0,right:n.clientWidth,bottom:n.clientHeight}:d(n);return a.left+=i,a.right-=i,a.top=a.top+i,a.bottom=a.bottom-i,a},i.prototype.runModifiers=function(e,t,i){var n=t.slice();return void 0!==i&&(n=this._options.modifiers.slice(0,a(this._options.modifiers,i))),n.forEach(function(t){var i;(i=t)&&"[object Function]"==={}.toString.call(i)&&(e=t.call(this,e))}.bind(this)),e},i.prototype.isModifierRequired=function(e,t){var i=a(this._options.modifiers,e);return!!this._options.modifiers.slice(0,i).filter((function(e){return e===t})).length},i.prototype.modifiers={},i.prototype.modifiers.applyStyle=function(e){var t,i={position:e.offsets.popper.position},n=Math.round(e.offsets.popper.left),r=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=p("transform"))?(i[t]="translate3d("+n+"px, "+r+"px, 0)",i.top=0,i.left=0):(i.left=n,i.top=r),Object.assign(i,e.styles),c(this._popper,i),this._popper.setAttribute("x-placement",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&c(e.arrowElement,e.offsets.arrow),e},i.prototype.modifiers.shift=function(e){var t=e.placement,i=t.split("-")[0],n=t.split("-")[1];if(n){var r=e.offsets.reference,a=s(e.offsets.popper),o={y:{start:{top:r.top},end:{top:r.top+r.height-a.height}},x:{start:{left:r.left},end:{left:r.left+r.width-a.width}}},l=-1!==["bottom","top"].indexOf(i)?"x":"y";e.offsets.popper=Object.assign(a,o[l][n])}return e},i.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,i=s(e.offsets.popper),n={left:function(){var t=i.left;return i.lefte.boundaries.right&&(t=Math.min(i.left,e.boundaries.right-i.width)),{left:t}},top:function(){var t=i.top;return i.tope.boundaries.bottom&&(t=Math.min(i.top,e.boundaries.bottom-i.height)),{top:t}}};return t.forEach((function(t){e.offsets.popper=Object.assign(i,n[t]())})),e},i.prototype.modifiers.keepTogether=function(e){var t=s(e.offsets.popper),i=e.offsets.reference,n=Math.floor;return t.rightn(i.right)&&(e.offsets.popper.left=n(i.right)),t.bottomn(i.bottom)&&(e.offsets.popper.top=n(i.bottom)),e},i.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn("WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split("-")[0],i=r(t),n=e.placement.split("-")[1]||"",a=[];return(a="flip"===this._options.flipBehavior?[t,i]:this._options.flipBehavior).forEach(function(o,l){if(t===o&&a.length!==l+1){t=e.placement.split("-")[0],i=r(t);var u=s(e.offsets.popper),c=-1!==["right","bottom"].indexOf(t);(c&&Math.floor(e.offsets.reference[t])>Math.floor(u[i])||!c&&Math.floor(e.offsets.reference[t])o[p]&&(e.offsets.popper[d]+=l[d]+f-o[p]);var m=l[d]+(i||l[c]/2-f/2)-o[d];return m=Math.max(Math.min(o[c]-f-8,m),8),r[d]=m,r[h]="",e.offsets.arrow=r,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(null==e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),i=1;i0},e.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),l?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,i=void 0===t?"":t;o.some((function(e){return!!~i.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),c=function(e,t){for(var i=0,n=Object.keys(t);i0},e}(),k="undefined"!=typeof WeakMap?new WeakMap:new n,w=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var i=u.getInstance(),n=new x(t,i,this);k.set(this,n)};["observe","unobserve","disconnect"].forEach((function(e){w.prototype[e]=function(){var t;return(t=k.get(this))[e].apply(t,arguments)}}));var C=void 0!==s.ResizeObserver?s.ResizeObserver:w;t.default=C},function(e,t,i){"use strict";t.__esModule=!0;var n=i(25);var r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.beforeEnter=function(e){(0,n.addClass)(e,"collapse-transition"),e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height="0",e.style.paddingTop=0,e.style.paddingBottom=0},e.prototype.enter=function(e){e.dataset.oldOverflow=e.style.overflow,0!==e.scrollHeight?(e.style.height=e.scrollHeight+"px",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom):(e.style.height="",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom),e.style.overflow="hidden"},e.prototype.afterEnter=function(e){(0,n.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow},e.prototype.beforeLeave=function(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.height=e.scrollHeight+"px",e.style.overflow="hidden"},e.prototype.leave=function(e){0!==e.scrollHeight&&((0,n.addClass)(e,"collapse-transition"),e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0)},e.prototype.afterLeave=function(e){(0,n.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},e}();t.default={name:"ElCollapseTransition",functional:!0,render:function(e,t){var i=t.children;return e("transition",{on:new r},i)}}},function(e,t,i){"use strict";t.__esModule=!0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.isVNode=function(e){return null!==e&&"object"===(void 0===e?"undefined":n(e))&&(0,r.hasOwn)(e,"componentOptions")};var r=i(19)},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=140)}({140:function(e,t,i){"use strict";i.r(t);var n=i(5),r=i.n(n),s=i(18),a=i.n(s),o=i(2),l=i(3),u=i(7),c=i.n(u),d={name:"ElTooltip",mixins:[r.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+Object(l.generateId)(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new c.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=a()(200,(function(){return e.handleClosePopper()})))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var i=this.getFirstElement();if(!i)return null;var n=i.data=i.data||{};return n.staticClass=this.addTooltipClass(n.staticClass),i},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),Object(o.on)(this.referenceElm,"mouseenter",this.show),Object(o.on)(this.referenceElm,"mouseleave",this.hide),Object(o.on)(this.referenceElm,"focus",(function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()})),Object(o.on)(this.referenceElm,"blur",this.handleBlur),Object(o.on)(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick((function(){e.value&&e.updatePopper()}))},watch:{focusing:function(e){e?Object(o.addClass)(this.referenceElm,"focusing"):Object(o.removeClass)(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout((function(){e.showPopper=!0}),this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout((function(){e.showPopper=!1}),this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;i2&&void 0!==arguments[2]?arguments[2]:300,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!t)throw new Error("instance & callback is required");var r=!1,s=function(){r||(r=!0,t&&t.apply(null,arguments))};n?e.$once("after-leave",s):e.$on("after-leave",s),setTimeout((function(){s()}),i+100)}},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=90)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},90:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?i("div",{staticClass:"el-progress-bar"},[i("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[i("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?i("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):i("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[i("svg",{attrs:{viewBox:"0 0 100 100"}},[i("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),i("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":e.strokeLinecap,"stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?i("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?i("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};n._withStripped=!0;var r={name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},strokeLinecap:{type:String,default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort((function(e,t){return e.percentage-t.percentage})),i=0;ie)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map((function(e,i){return"string"==typeof e?{color:e,percentage:(i+1)*t}:e}))}}},s=i(0),a=Object(s.a)(r,n,[],!1,null,null,null);a.options.__file="packages/progress/src/progress.vue";var o=a.exports;o.install=function(e){e.component(o.name,o)};t.default=o}})},function(e,t,i){var n=i(125),r=i(91);e.exports={throttle:n,debounce:r}},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=61)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},10:function(e,t){e.exports=i(123)},12:function(e,t){e.exports=i(200)},15:function(e,t){e.exports=i(126)},16:function(e,t){e.exports=i(124)},18:function(e,t){e.exports=i(91)},21:function(e,t){e.exports=i(90)},22:function(e,t){e.exports=i(127)},3:function(e,t){e.exports=i(19)},31:function(e,t){e.exports=i(128)},33:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};n._withStripped=!0;var r=i(4),s=i.n(r),a=i(3),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={mixins:[s.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,r=i.valueKey;if(!this.created&&!n){if(r&&"object"===(void 0===e?"undefined":o(e))&&"object"===(void 0===t?"undefined":o(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some((function(e){return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}))}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(a.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),r=i.indexOf(this);n>-1&&r<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},u=i(0),c=Object(u.a)(l,n,[],!1,null,null,null);c.options.__file="packages/select/src/option.vue";t.a=c.exports},37:function(e,t){e.exports=i(203)},4:function(e,t){e.exports=i(36)},5:function(e,t){e.exports=i(88)},6:function(e,t){e.exports=i(121)},61:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,(function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])})),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.selectOption(t))},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return!("button"in t)&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:e.deletePrevTag(t)},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,tabindex:e.multiple&&e.filterable?"-1":null},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.debouncedOnInputChange},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.selectOption(t))},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)};n._withStripped=!0;var r=i(4),s=i.n(r),a=i(22),o=i.n(a),l=i(6),u=i.n(l),c=i(10),d=i.n(c),h=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};h._withStripped=!0;var p=i(5),f={name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[i.n(p).a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",(function(){e.$parent.visible&&e.updatePopper()})),this.$on("destroyPopper",this.destroyPopper)}},m=i(0),v=Object(m.a)(f,h,[],!1,null,null,null);v.options.__file="packages/select/src/select-dropdown.vue";var g=v.exports,_=i(33),b=i(37),y=i.n(b),x=i(15),k=i.n(x),w=i(18),C=i.n(w),S=i(12),O=i.n(S),D=i(16),E=i(31),T=i.n(E),$=i(3),P=i(21),j={mixins:[s.a,u.a,o()("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter((function(e){return e.visible})).every((function(e){return e.disabled}))}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach((function(e){e.hover=t.hoverOption===e}))}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick((function(){return t.scrollToOption(t.hoverOption)}))}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object($.isIE)()&&!Object($.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter((function(e){return!e.created})).some((function(t){return t.currentLabel===e.query}));return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"},propPlaceholder:function(){return void 0!==this.placeholder?this.placeholder:this.t("el.select.placeholder")}},components:{ElInput:d.a,ElSelectMenu:g,ElOption:_.a,ElTag:y.a,ElScrollbar:k.a},directives:{Clickoutside:O.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,required:!1},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick((function(){e.resetInputHeight()}))},propPlaceholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object($.valueEquals)(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick((function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)})),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick((function(){e.broadcast("ElSelectDropdown","updatePopper")})),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick((function(e){return t.handleQueryChange(i)}));else{var n=i[i.length-1]||"";this.isOnComposition=!Object(P.isKorean)(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick((function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")})),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick((function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()})),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var i=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");T()(i,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick((function(){return e.scrollToOption(e.selected)}))},emitChange:function(e){Object($.valueEquals)(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),r="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),s=this.cachedOptions.length-1;s>=0;s--){var a=this.cachedOptions[s];if(i?Object($.getValueByPath)(a.value,this.valueKey)===Object($.getValueByPath)(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var o={value:e,currentLabel:i||n||r?"":String(e)};return this.multiple&&(o.hitState=!1),o},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach((function(t){i.push(e.getOption(t))})),this.selected=i,this.$nextTick((function(){e.resetInputHeight()}))},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.filterable&&(this.menuVisibleOnFocus=!0)),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout((function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)}),50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick((function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,(function(e){return"INPUT"===e.tagName}))[0],n=e.$refs.tags,r=n?Math.round(n.getBoundingClientRect().height):0,s=e.initialInputHeight||40;i.style.height=0===e.selected.length?s+"px":Math.max(n?r+(r>s?6:0):0,s)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}}))},resetHoverIndex:function(){var e=this;setTimeout((function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map((function(t){return e.options.indexOf(t)}))):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)}),300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),r=this.getValueIndex(n,e.value);r>-1?n.splice(r,1):(this.multipleLimit<=0||n.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],i="[object object]"===Object.prototype.toString.call(t).toLowerCase();if(i){var n=this.valueKey,r=-1;return e.some((function(e,i){return Object($.getValueByPath)(e,n)===Object($.getValueByPath)(t,n)&&(r=i,!0)})),r}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object($.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.propPlaceholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=C()(this.debounce,(function(){e.onInputChange()})),this.debouncedQueryChange=C()(this.debounce,(function(t){e.handleQueryChange(t.target.value)})),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object(D.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick((function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)})),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(D.removeResizeListener)(this.$el,this.handleResize)}},M=Object(m.a)(j,n,[],!1,null,null,null);M.options.__file="packages/select/src/select.vue";var I=M.exports;I.install=function(e){e.component(I.name,I)};t.default=I}})},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=53)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},3:function(e,t){e.exports=i(19)},33:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};n._withStripped=!0;var r=i(4),s=i.n(r),a=i(3),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={mixins:[s.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,r=i.valueKey;if(!this.created&&!n){if(r&&"object"===(void 0===e?"undefined":o(e))&&"object"===(void 0===t?"undefined":o(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some((function(e){return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}))}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(a.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),r=i.indexOf(this);n>-1&&r<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},u=i(0),c=Object(u.a)(l,n,[],!1,null,null,null);c.options.__file="packages/select/src/option.vue";t.a=c.exports},4:function(e,t){e.exports=i(36)},53:function(e,t,i){"use strict";i.r(t);var n=i(33);n.a.install=function(e){e.component(n.a.name,n.a)},t.default=n.a}})},function(e,t,i){e.exports=i(379)},function(e,t,i){"use strict";var n=i(380),r=i(381);function s(e){var t=0,i=0,n=0,r=0;return"detail"in e&&(i=e.detail),"wheelDelta"in e&&(i=-e.wheelDelta/120),"wheelDeltaY"in e&&(i=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=i,i=0),n=10*t,r=10*i,"deltaY"in e&&(r=e.deltaY),"deltaX"in e&&(n=e.deltaX),(n||r)&&e.deltaMode&&(1==e.deltaMode?(n*=40,r*=40):(n*=800,r*=800)),n&&!t&&(t=n<1?-1:1),r&&!i&&(i=r<1?-1:1),{spinX:t,spinY:i,pixelX:n,pixelY:r}}s.getEventType=function(){return n.firefox()?"DOMMouseScroll":r("wheel")?"wheel":"mousewheel"},e.exports=s},function(e,t){var i,n,r,s,a,o,l,u,c,d,h,p,f,m,v,g=!1;function _(){if(!g){g=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),_=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(p=/\b(iPhone|iP[ao]d)/.exec(e),f=/\b(iP[ao]d)/.exec(e),d=/Android/i.exec(e),m=/FBAN\/\w+;/i.exec(e),v=/Mobile/i.exec(e),h=!!/Win64/.exec(e),t){(i=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN)&&document&&document.documentMode&&(i=document.documentMode);var b=/(?:Trident\/(\d+.\d+))/.exec(e);o=b?parseFloat(b[1])+4:i,n=t[2]?parseFloat(t[2]):NaN,r=t[3]?parseFloat(t[3]):NaN,(s=t[4]?parseFloat(t[4]):NaN)?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),a=t&&t[1]?parseFloat(t[1]):NaN):a=NaN}else i=n=r=a=s=NaN;if(_){if(_[1]){var y=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=!y||parseFloat(y[1].replace("_","."))}else l=!1;u=!!_[2],c=!!_[3]}else l=u=c=!1}}var b={ie:function(){return _()||i},ieCompatibilityMode:function(){return _()||o>i},ie64:function(){return b.ie()&&h},firefox:function(){return _()||n},opera:function(){return _()||r},webkit:function(){return _()||s},safari:function(){return b.webkit()},chrome:function(){return _()||a},windows:function(){return _()||u},osx:function(){return _()||l},linux:function(){return _()||c},iphone:function(){return _()||p},mobile:function(){return _()||p||f||d||v},nativeApp:function(){return _()||m},android:function(){return _()||d},ipad:function(){return _()||f}};e.exports=b},function(e,t,i){"use strict";var n,r=i(382);r.canUseDOM&&(n=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")) + * @license MIT */void 0===(r="function"==typeof(n=function(){var e,t,i={version:"0.2.0"},n=i.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function r(e,t,i){return ei?i:e}function s(e){return 100*(-1+e)}i.configure=function(e){var t,i;for(t in e)void 0!==(i=e[t])&&e.hasOwnProperty(t)&&(n[t]=i);return this},i.status=null,i.set=function(e){var t=i.isStarted();e=r(e,n.minimum,1),i.status=1===e?null:e;var l=i.render(!t),u=l.querySelector(n.barSelector),c=n.speed,d=n.easing;return l.offsetWidth,a((function(t){""===n.positionUsing&&(n.positionUsing=i.getPositioningCSS()),o(u,function(e,t,i){var r;return(r="translate3d"===n.positionUsing?{transform:"translate3d("+s(e)+"%,0,0)"}:"translate"===n.positionUsing?{transform:"translate("+s(e)+"%,0)"}:{"margin-left":s(e)+"%"}).transition="all "+t+"ms "+i,r}(e,c,d)),1===e?(o(l,{transition:"none",opacity:1}),l.offsetWidth,setTimeout((function(){o(l,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){i.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},i.isStarted=function(){return"number"==typeof i.status},i.start=function(){i.status||i.set(0);var e=function(){setTimeout((function(){i.status&&(i.trickle(),e())}),n.trickleSpeed)};return n.trickle&&e(),this},i.done=function(e){return e||i.status?i.inc(.3+.5*Math.random()).set(1):this},i.inc=function(e){var t=i.status;return t?("number"!=typeof e&&(e=(1-t)*r(Math.random()*t,.1,.95)),t=r(t+e,0,.994),i.set(t)):i.start()},i.trickle=function(){return i.inc(Math.random()*n.trickleRate)},e=0,t=0,i.promise=function(n){return n&&"resolved"!==n.state()?(0===t&&i.start(),e++,t++,n.always((function(){0==--t?(e=0,i.done()):i.set((e-t)/e)})),this):this},i.render=function(e){if(i.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=n.template;var r,a=t.querySelector(n.barSelector),l=e?"-100":s(i.status||0),c=document.querySelector(n.parent);return o(a,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),n.showSpinner||(r=t.querySelector(n.spinnerSelector))&&h(r),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},i.remove=function(){c(document.documentElement,"nprogress-busy"),c(document.querySelector(n.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&h(e)},i.isRendered=function(){return!!document.getElementById("nprogress")},i.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var a=function(){var e=[];function t(){var i=e.shift();i&&i(t)}return function(i){e.push(i),1==e.length&&t()}}(),o=function(){var e=["Webkit","O","Moz","ms"],t={};function i(i){return i=i.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()})),t[i]||(t[i]=function(t){var i=document.body.style;if(t in i)return t;for(var n,r=e.length,s=t.charAt(0).toUpperCase()+t.slice(1);r--;)if((n=e[r]+s)in i)return n;return t}(i))}function n(e,t,n){t=i(t),e.style[t]=n}return function(e,t){var i,r,s=arguments;if(2==s.length)for(i in t)void 0!==(r=t[i])&&t.hasOwnProperty(i)&&n(e,i,r);else n(e,s[1],s[2])}}();function l(e,t){return("string"==typeof e?e:d(e)).indexOf(" "+t+" ")>=0}function u(e,t){var i=d(e),n=i+t;l(i,t)||(e.className=n.substring(1))}function c(e,t){var i,n=d(e);l(e,t)&&(i=n.replace(" "+t+" "," "),e.className=i.substring(1,i.length-1))}function d(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function h(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return i})?n.call(t,i,t,e):n)||(e.exports=r)},function(e,t,i){"use strict";var n=i(218),r=i(2),s=i(9),a=i(5),o=i(69),l=i(21),u=i(20),c=i(28),d=i(219),h=i(58),p=i(262),f=i(220),m=i(4)("replace"),v=Math.max,g=Math.min,_="$0"==="a".replace(/./,"$0"),b=!!/./[m]&&""===/./[m]("a","$0");n("replace",(function(e,t,i){var n=b?"$":"$0";return[function(e,i){var n=c(this),r=null==e?void 0:h(e,m);return r?r.call(e,n,i):t.call(u(n),e,i)},function(e,r){var c=s(this),h=u(e);if("string"==typeof r&&-1===r.indexOf(n)&&-1===r.indexOf("$<")){var m=i(t,c,h,r);if(m.done)return m.value}var _=a(r);_||(r=u(r));var b=c.global;if(b){var y=c.unicode;c.lastIndex=0}for(var x=[];;){var k=f(c,h);if(null===k)break;if(x.push(k),!b)break;""===u(k[0])&&(c.lastIndex=d(h,l(c.lastIndex),y))}for(var w,C="",S=0,O=0;O=S&&(C+=h.slice(S,E)+M,S=E+D.length)}return C+h.slice(S)}]}),!!r((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$
")}))||!_||b)},function(e,t,i){var n=i(3),r=i(163),s=i(164),a=i(168),o=i(32),l=function(e){if(e&&e.forEach!==a)try{o(e,"forEach",a)}catch(t){e.forEach=a}};for(var u in r)r[u]&&l(n[u]&&n[u].prototype);l(s)},function(e,t,i){"use strict";var n,r,s=i(20),a=i(137),o=i(217),l=i(64),u=i(27),c=i(39).get,d=i(227),h=i(228),p=RegExp.prototype.exec,f=l("native-string-replace",String.prototype.replace),m=p,v=(n=/a/,r=/b*/g,p.call(n,"a"),p.call(r,"a"),0!==n.lastIndex||0!==r.lastIndex),g=o.UNSUPPORTED_Y||o.BROKEN_CARET,_=void 0!==/()??/.exec("")[1];(v||_||g||d||h)&&(m=function(e){var t,i,n,r,o,l,d,h=this,b=c(h),y=s(e),x=b.raw;if(x)return x.lastIndex=h.lastIndex,t=m.call(x,y),h.lastIndex=x.lastIndex,t;var k=b.groups,w=g&&h.sticky,C=a.call(h),S=h.source,O=0,D=y;if(w&&(-1===(C=C.replace("y","")).indexOf("g")&&(C+="g"),D=y.slice(h.lastIndex),h.lastIndex>0&&(!h.multiline||h.multiline&&"\n"!==y.charAt(h.lastIndex-1))&&(S="(?: "+S+")",D=" "+D,O++),i=new RegExp("^(?:"+S+")",C)),_&&(i=new RegExp("^"+S+"$(?!\\s)",C)),v&&(n=h.lastIndex),r=p.call(w?i:h,D),w?r?(r.input=r.input.slice(O),r[0]=r[0].slice(O),r.index=h.lastIndex,h.lastIndex+=r[0].length):h.lastIndex=0:v&&r&&(h.lastIndex=h.global?r.index+r[0].length:n),_&&r&&r.length>1&&f.call(r[0],i,(function(){for(o=1;oc;)if((o=l[c++])!=o)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===i)return e||c||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},function(e,t){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,i){var n=i(10),r=i(5),s=i(15),a=i(70),o=i(151),l=a("IE_PROTO"),u=Object.prototype;e.exports=o?Object.getPrototypeOf:function(e){var t=s(e);if(n(t,l))return t[l];var i=t.constructor;return r(i)&&t instanceof i?i.prototype:t instanceof Object?u:null}},function(e,t,i){var n=i(76),r=i(58),s=i(50),a=i(4)("iterator");e.exports=function(e){if(null!=e)return r(e,a)||r(e,"@@iterator")||s[n(e)]}},function(e,t,i){var n={};n[i(4)("toStringTag")]="z",e.exports="[object z]"===String(n)},function(e,t,i){var n=i(265),r=i(41),s=Object.prototype,a=s.hasOwnProperty,o=s.propertyIsEnumerable,l=n(function(){return arguments}())?n:function(e){return r(e)&&a.call(e,"callee")&&!o.call(e,"callee")};e.exports=l},function(e,t,i){var n=i(35)(i(24),"Map");e.exports=n},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,i){var n=i(285),r=i(292),s=i(294),a=i(295),o=i(296);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=9007199254740991}},function(e,t,i){var n=i(22),r=i(117),s=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(n(e))return!1;var i=typeof e;return!("number"!=i&&"symbol"!=i&&"boolean"!=i&&null!=e&&!r(e))||(a.test(e)||!s.test(e)||null!=t&&e in Object(t))}},function(e,t,i){var n=i(46),r=i(41);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==n(e)}},function(e,t){e.exports=function(e){return e}},function(e,t,i){var n=i(1),r=i(7);n({target:"Object",stat:!0,forced:!r,sham:!r},{defineProperty:i(11).f})},function(e,t,i){"use strict";t.__esModule=!0,t.i18n=t.use=t.t=void 0;var n=a(i(361)),r=a(i(0)),s=a(i(362));function a(e){return e&&e.__esModule?e:{default:e}}var o=(0,a(i(363)).default)(r.default),l=n.default,u=!1,c=function(){var e=Object.getPrototypeOf(this||r.default).$t;if("function"==typeof e&&r.default.locale)return u||(u=!0,r.default.locale(r.default.config.lang,(0,s.default)(l,r.default.locale(r.default.config.lang)||{},{clone:!0}))),e.apply(this,arguments)},d=t.t=function(e,t){var i=c.apply(this,arguments);if(null!=i)return i;for(var n=e.split("."),r=l,s=0,a=n.length;s1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;l||(l=document.createElement("textarea"),document.body.appendChild(l));var n=d(e),r=n.paddingSize,s=n.borderSize,a=n.boxSizing,o=n.contextStyle;l.setAttribute("style",o+";"+u),l.value=e.value||e.placeholder||"";var c=l.scrollHeight,h={};"border-box"===a?c+=s:"content-box"===a&&(c-=r),l.value="";var p=l.scrollHeight-r;if(null!==t){var f=p*t;"border-box"===a&&(f=f+r+s),c=Math.max(f,c),h.minHeight=f+"px"}if(null!==i){var m=p*i;"border-box"===a&&(m=m+r+s),c=Math.min(m,c)}return h.height=c+"px",l.parentNode&&l.parentNode.removeChild(l),l=null,h}var p=i(9),f=i.n(p),m=i(21),v={name:"ElInput",componentName:"ElInput",mixins:[s.a,o.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return f()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick((function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()}))}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=h(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:h(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionUpdate:function(e){var t=e.target.value,i=t[t.length-1]||"";this.isComposing=!Object(m.isKorean)(i)},handleCompositionEnd:function(e){this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n=t.length)break;r=t[n++]}else{if((n=t.next()).done)break;r=n.value}var s=r.target.__resizeListeners__||[];s.length&&s.forEach((function(e){e()}))}};t.addResizeListener=function(e,t){a||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new s.default(o),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},t.removeResizeListener=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())}},function(e,t){e.exports=function(e,t,i,n){var r,s=0;return"boolean"!=typeof t&&(n=i,i=t,t=void 0),function(){var a=this,o=Number(new Date)-s,l=arguments;function u(){s=Number(new Date),i.apply(a,l)}function c(){r=void 0}n&&!r&&u(),r&&clearTimeout(r),void 0===n&&o>e?u():!0!==t&&(r=setTimeout(n?c:u,void 0===n?e-o:e))}}},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=132)}({132:function(e,t,i){"use strict";i.r(t);var n=i(16),r=i(38),s=i.n(r),a=i(3),o=i(2),l={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};function u(e){var t=e.move,i=e.size,n=e.bar,r={},s="translate"+n.axis+"("+t+"%)";return r[n.size]=i,r.transform=s,r.msTransform=s,r.webkitTransform=s,r}var c={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return l[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,i=this.move,n=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+n.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:u({size:t,move:i,bar:n})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(o.on)(document,"mousemove",this.mouseMoveDocumentHandler),Object(o.on)(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var i=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(o.off)(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(o.off)(document,"mouseup",this.mouseUpDocumentHandler)}},d={name:"ElScrollbar",components:{Bar:c},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=s()(),i=this.wrapStyle;if(t){var n="-"+t+"px",r="margin-bottom: "+n+"; margin-right: "+n+";";Array.isArray(this.wrapStyle)?(i=Object(a.toObject)(this.wrapStyle)).marginRight=i.marginBottom=n:"string"==typeof this.wrapStyle?i+=r:i=r}var o=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),l=e("div",{ref:"wrap",style:i,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[o]]),u=void 0;return u=this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:i},[[o]])]:[l,e(c,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(c,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})],e("div",{class:"el-scrollbar"},u)},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,i=this.wrap;i&&(e=100*i.clientHeight/i.scrollHeight,t=100*i.clientWidth/i.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(n.addResizeListener)(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(n.removeResizeListener)(this.$refs.resize,this.update)},install:function(e){e.component(d.name,d)}};t.default=d},16:function(e,t){e.exports=i(124)},2:function(e,t){e.exports=i(25)},3:function(e,t){e.exports=i(19)},38:function(e,t){e.exports=i(122)}})},function(e,t,i){"use strict";t.__esModule=!0,t.default=function(e){return{methods:{focus:function(){this.$refs[e].focus()}}}}},function(e,t,i){"use strict";t.__esModule=!0,t.default=function(e,t){if(s.default.prototype.$isServer)return;if(!t)return void(e.scrollTop=0);var i=[],n=t.offsetParent;for(;n&&e!==n&&e.contains(n);)i.push(n),n=n.offsetParent;var r=t.offsetTop+i.reduce((function(e,t){return e+t.offsetTop}),0),a=r+t.offsetHeight,o=e.scrollTop,l=o+e.clientHeight;rl&&(e.scrollTop=a-e.clientHeight)};var n,r=i(0),s=(n=r)&&n.__esModule?n:{default:n}},function(e,t,i){"use strict";t.__esModule=!0;var n=n||{};n.Utils=n.Utils||{},n.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var i=e.childNodes[t];if(n.Utils.attemptFocus(i)||n.Utils.focusLastDescendant(i))return!0}return!1},n.Utils.attemptFocus=function(e){if(!n.Utils.isFocusable(e))return!1;n.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return n.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},n.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},n.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),r=arguments.length,s=Array(r>2?r-2:0),a=2;a1?arguments[1]:void 0)}})},function(e,t,i){var n=i(9),r=i(157),s=i(4)("species");e.exports=function(e,t){var i,a=n(e).constructor;return void 0===a||null==(i=n(a)[s])?t:r(i)}},function(e,t){!function(t){"use strict";var i=Object.prototype,n=i.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag",l="object"==typeof e,u=t.regeneratorRuntime;if(u)l&&(e.exports=u);else{(u=t.regeneratorRuntime=l?e.exports:{}).wrap=m;var c={},d={};d[s]=function(){return this};var h=Object.getPrototypeOf,p=h&&h(h(O([])));p&&p!==i&&n.call(p,s)&&(d=p);var f=b.prototype=g.prototype=Object.create(d);_.prototype=f.constructor=b,b.constructor=_,b[o]=_.displayName="GeneratorFunction",u.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===_||"GeneratorFunction"===(t.displayName||t.name))},u.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,o in e||(e[o]="GeneratorFunction")),e.prototype=Object.create(f),e},u.awrap=function(e){return{__await:e}},y(x.prototype),x.prototype[a]=function(){return this},u.AsyncIterator=x,u.async=function(e,t,i,n){var r=new x(m(e,t,i,n));return u.isGeneratorFunction(t)?r:r.next().then((function(e){return e.done?e.value:r.next()}))},y(f),f[o]="Generator",f[s]=function(){return this},f.toString=function(){return"[object Generator]"},u.keys=function(e){var t=[];for(var i in e)t.push(i);return t.reverse(),function i(){for(;t.length;){var n=t.pop();if(n in e)return i.value=n,i.done=!1,i}return i.done=!0,i}},u.values=O,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function i(i,n){return a.type="throw",a.arg=e,t.next=i,n&&(t.method="next",t.arg=void 0),!!n}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],a=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var o=n.call(s,"catchLoc"),l=n.call(s,"finallyLoc");if(o&&l){if(this.prev=0;--i){var r=this.tryEntries[i];if(r.tryLoc<=this.prev&&n.call(r,"finallyLoc")&&this.prev=0;--t){var i=this.tryEntries[t];if(i.finallyLoc===e)return this.complete(i.completion,i.afterLoc),C(i),c}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.tryLoc===e){var n=i.completion;if("throw"===n.type){var r=n.arg;C(i)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,i){return this.delegate={iterator:O(e),resultName:t,nextLoc:i},"next"===this.method&&(this.arg=void 0),c}}}function m(e,t,i,n){var r=t&&t.prototype instanceof g?t:g,s=Object.create(r.prototype),a=new S(n||[]);return s._invoke=function(e,t,i){var n="suspendedStart";return function(r,s){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===r)throw s;return D()}for(i.method=r,i.arg=s;;){var a=i.delegate;if(a){var o=k(a,i);if(o){if(o===c)continue;return o}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if("suspendedStart"===n)throw n="completed",i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);n="executing";var l=v(e,t,i);if("normal"===l.type){if(n=i.done?"completed":"suspendedYield",l.arg===c)continue;return{value:l.arg,done:i.done}}"throw"===l.type&&(n="completed",i.method="throw",i.arg=l.arg)}}}(e,i,a),s}function v(e,t,i){try{return{type:"normal",arg:e.call(t,i)}}catch(e){return{type:"throw",arg:e}}}function g(){}function _(){}function b(){}function y(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function x(e){var t;this._invoke=function(i,r){function s(){return new Promise((function(t,s){!function t(i,r,s,a){var o=v(e[i],e,r);if("throw"!==o.type){var l=o.arg,u=l.value;return u&&"object"==typeof u&&n.call(u,"__await")?Promise.resolve(u.__await).then((function(e){t("next",e,s,a)}),(function(e){t("throw",e,s,a)})):Promise.resolve(u).then((function(e){l.value=e,s(l)}),a)}a(o.arg)}(i,r,t,s)}))}return t=t?t.then(s,s):s()}}function k(e,t){var i=e.iterator[t.method];if(void 0===i){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,k(e,t),"throw"===t.method))return c;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var n=v(i,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,c;var r=n.arg;return r?r.done?(t[e.resultName]=r.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,c):r:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,c)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function O(e){if(e){var t=e[s];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,r=function t(){for(;++i=51||!r((function(){var e=[];return e[f]=!1,e.concat()[0]!==e})),v=d("concat"),g=function(e){if(!a(e))return!1;var t=e[f];return void 0!==t?!!t:s(e)};n({target:"Array",proto:!0,forced:!m||!v},{concat:function(e){var t,i,n,r,s,a=o(this),d=c(a,0),h=0;for(t=-1,n=arguments.length;t9007199254740991)throw TypeError("Maximum allowed index exceeded");for(i=0;i=9007199254740991)throw TypeError("Maximum allowed index exceeded");u(d,h++,s)}return d.length=h,d}})},function(e,t,i){var n=i(216);e.exports=function(e){if(n(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,i){var n=i(4)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(i){try{return t[n]=!1,"/./"[e](t)}catch(e){}}return!1}},function(e,t,i){"use strict";var n=i(9);e.exports=function(){var e=n(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,i){"use strict";var n=i(16),r=i(99),s=i(50),a=i(39),o=i(147),l=a.set,u=a.getterFor("Array Iterator");e.exports=o(Array,"Array",(function(e,t){l(this,{type:"Array Iterator",target:n(e),index:0,kind:t})}),(function(){var e=u(this),t=e.target,i=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==i?{value:n,done:!1}:"values"==i?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}}),"values"),s.Arguments=s.Array,r("keys"),r("values"),r("entries")},function(e,t,i){var n=i(103);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,i){var n=i(7),r=i(11),s=i(9),a=i(48);e.exports=n?Object.defineProperties:function(e,t){s(e);for(var i,n=a(t),o=n.length,l=0;o>l;)r.f(e,i=n[l++],t[i]);return e}},function(e,t,i){var n=i(7),r=i(2),s=i(66);e.exports=!n&&!r((function(){return 7!=Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a}))},function(e,t,i){var n=i(8),r=i(68),s=i(58),a=i(236),o=i(4)("toPrimitive");e.exports=function(e,t){if(!n(e)||r(e))return e;var i,l=s(e,o);if(l){if(void 0===t&&(t="default"),i=l.call(e,t),!n(i)||r(i))return i;throw TypeError("Can't convert object to primitive value")}return void 0===t&&(t="number"),a(e,t)}},function(e,t){e.exports=function(e){try{return String(e)}catch(e){return"Object"}}},function(e,t,i){var n=i(10),r=i(16),s=i(104).indexOf,a=i(49);e.exports=function(e,t){var i,o=r(e),l=0,u=[];for(i in o)!n(a,i)&&n(o,i)&&u.push(i);for(;t.length>l;)n(o,i=t[l++])&&(~s(u,i)||u.push(i));return u}},function(e,t,i){var n=i(69),r=Math.max,s=Math.min;e.exports=function(e,t){var i=n(e);return i<0?r(i+t,0):s(i,t)}},function(e,t,i){var n=i(17);e.exports=n("document","documentElement")},function(e,t,i){"use strict";var n=i(1),r=i(30),s=i(62),a=i(5),o=i(238),l=i(107),u=i(74),c=i(73),d=i(32),h=i(13),p=i(4),f=i(50),m=i(150),v=s.PROPER,g=s.CONFIGURABLE,_=m.IteratorPrototype,b=m.BUGGY_SAFARI_ITERATORS,y=p("iterator"),x=function(){return this};e.exports=function(e,t,i,s,p,m,k){o(i,t,s);var w,C,S,O=function(e){if(e===p&&P)return P;if(!b&&e in T)return T[e];switch(e){case"keys":case"values":case"entries":return function(){return new i(this,e)}}return function(){return new i(this)}},D=t+" Iterator",E=!1,T=e.prototype,$=T[y]||T["@@iterator"]||p&&T[p],P=!b&&$||O(p),j="Array"==t&&T.entries||$;if(j&&(w=l(j.call(new e)))!==Object.prototype&&w.next&&(r||l(w)===_||(u?u(w,_):a(w[y])||h(w,y,x)),c(w,D,!0,!0),r&&(f[D]=x)),v&&"values"==p&&$&&"values"!==$.name&&(!r&&g?d(T,"name","values"):(E=!0,P=function(){return $.call(this)})),p)if(C={values:O("values"),keys:m?P:O("keys"),entries:O("entries")},k)for(S in C)(b||E||!(S in T))&&h(T,S,C[S]);else n({target:t,proto:!0,forced:b||E},C);return r&&!k||T[y]===P||h(T,y,P,{name:p}),f[t]=P,C}},function(e,t,i){var n=i(10),r=i(149),s=i(26),a=i(11);e.exports=function(e,t){for(var i=r(t),o=a.f,l=s.f,u=0;un;)t.push(arguments[n++]);return x[++y]=function(){(l(e)?e:Function(e)).apply(void 0,t)},r(y),y},v=function(e){delete x[e]},f?r=function(e){g.nextTick(w(e))}:b&&b.now?r=function(e){b.now(w(e))}:_&&!p?(a=(s=new _).port2,s.port1.onmessage=C,r=c(a.postMessage,a,1)):o.addEventListener&&l(o.postMessage)&&!o.importScripts&&n&&"file:"!==n.protocol&&!u(S)?(r=S,o.addEventListener("message",C,!1)):r="onreadystatechange"in h("script")?function(e){d.appendChild(h("script")).onreadystatechange=function(){d.removeChild(this),k(e)}}:function(e){setTimeout(w(e),0)}),e.exports={set:m,clear:v}},function(e,t,i){var n=i(60);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},function(e,t,i){var n=i(9),r=i(8),s=i(161);e.exports=function(e,t){if(n(e),r(t)&&t.constructor===e)return t;var i=s.f(e);return(0,i.resolve)(t),i.promise}},function(e,t,i){"use strict";var n=i(31),r=function(e){var t,i;this.promise=new e((function(e,n){if(void 0!==t||void 0!==i)throw TypeError("Bad Promise constructor");t=e,i=n})),this.resolve=n(t),this.reject=n(i)};e.exports.f=function(e){return new r(e)}},function(e,t,i){var n=i(69),r=i(20),s=i(28),a=function(e){return function(t,i){var a,o,l=r(s(t)),u=n(i),c=l.length;return u<0||u>=c?e?"":void 0:(a=l.charCodeAt(u))<55296||a>56319||u+1===c||(o=l.charCodeAt(u+1))<56320||o>57343?e?l.charAt(u):a:e?l.slice(u,u+2):o-56320+(a-55296<<10)+65536}};e.exports={codeAt:a(!1),charAt:a(!0)}},function(e,t){e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},function(e,t,i){var n=i(66)("span").classList,r=n&&n.constructor&&n.constructor.prototype;e.exports=r===Object.prototype?void 0:r},function(e,t,i){var n=i(254);e.exports=function(e,t){return new(n(e))(0===t?0:t)}},function(e,t,i){var n=i(1),r=i(7),s=i(149),a=i(16),o=i(26),l=i(80);n({target:"Object",stat:!0,sham:!r},{getOwnPropertyDescriptors:function(e){for(var t,i,n=a(e),r=o.f,u=s(n),c={},d=0;u.length>d;)void 0!==(i=r(n,t=u[d++]))&&l(c,t,i);return c}})},function(e,t,i){var n=i(1),r=i(2),s=i(15),a=i(107),o=i(151);n({target:"Object",stat:!0,forced:r((function(){a(1)})),sham:!o},{getPrototypeOf:function(e){return a(s(e))}})},function(e,t,i){"use strict";var n=i(33).forEach,r=i(40)("forEach");e.exports=r?[].forEach:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}},function(e,t,i){var n=i(2);e.exports=!n((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,i){var n=i(16),r=i(45).f,s={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==s.call(e)?function(e){try{return r(e)}catch(e){return a.slice()}}(e):r(n(e))}},function(e,t,i){var n=i(4);t.f=n},function(e,t,i){var n=i(259),r=i(10),s=i(171),a=i(11).f;e.exports=function(e){var t=n.Symbol||(n.Symbol={});r(t,e)||a(t,e,{value:s.f(e)})}},function(e,t,i){var n=i(1),r=i(260);n({target:"Array",stat:!0,forced:!i(156)((function(e){Array.from(e)}))},{from:r})},function(e,t,i){i(1)({target:"Object",stat:!0,sham:!i(7)},{create:i(27)})},function(e,t){e.exports=function(e,t){for(var i=-1,n=t.length,r=e.length;++ic))return!1;var h=l.get(e),p=l.get(t);if(h&&p)return h==t&&p==e;var f=-1,m=!0,v=2&i?new n:void 0;for(l.set(e,t),l.set(t,e);++f-1&&e%1==0&&e3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return h(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return h(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return h(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return h(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return h(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return h(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return h(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return h(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return h(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return h(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return h(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+h(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},_={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+o,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var i=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?i-1:i)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",u],ddd:[o,u],MMM:[o,d("monthNamesShort")],MMMM:[o,d("monthNames")],a:[o,function(e,t,i){var n=t.toLowerCase();n===i.amPm[0]?e.isPm=!1:n===i.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var i,n=(t+"").match(/([+-]|\d\d)/gi);n&&(i=60*n[1]+parseInt(n[2],10),e.timezoneOffset="+"===n[0]?i:-i)}]};_.dd=_.d,_.dddd=_.ddd,_.DD=_.D,_.mm=_.m,_.hh=_.H=_.HH=_.h,_.MM=_.M,_.ss=_.s,_.A=_.a,s.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},s.format=function(e,t,i){var n=i||s.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=s.masks[t]||t||s.masks.default;var r=[];return(t=(t=t.replace(l,(function(e,t){return r.push(t),"@@@"}))).replace(a,(function(t){return t in g?g[t](e,n):t.slice(1,t.length-1)}))).replace(/@@@/g,(function(){return r.shift()}))},s.parse=function(e,t,i){var n=i||s.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=s.masks[t]||t,e.length>1e3)return null;var r={},o=[],u=[];t=t.replace(l,(function(e,t){return u.push(t),"@@@"}));var c,d=(c=t,c.replace(/[|\\{()[^$+*?.-]/g,"\\$&")).replace(a,(function(e){if(_[e]){var t=_[e];return o.push(t[1]),"("+t[0]+")"}return e}));d=d.replace(/@@@/g,(function(){return u.shift()}));var h=e.match(new RegExp(d,"i"));if(!h)return null;for(var p=1;p0?this._openTimer=setTimeout((function(){t._openTimer=null,t.doOpen(i)}),n):this.doOpen(i)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,i=e.modal,n=e.zIndex;if(n&&(s.default.zIndex=n),i&&(this._closing&&(s.default.closeModal(this._popupId),this._closing=!1),s.default.openModal(this._popupId,s.default.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!(0,o.hasClass)(document.body,"el-popup-parent--hidden"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt((0,o.getStyle)(document.body,"paddingRight"),10)),c=(0,a.default)();var r=document.documentElement.clientHeight0&&(r||"scroll"===l)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+c+"px"),(0,o.addClass)(document.body,"el-popup-parent--hidden")}"static"===getComputedStyle(t).position&&(t.style.position="absolute"),t.style.zIndex=s.default.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout((function(){e._closeTimer=null,e.doClose()}),t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){s.default.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,(0,o.removeClass)(document.body,"el-popup-parent--hidden")),this.withoutHiddenClass=!0}}},t.PopupManager=s.default},function(e,t,i){"use strict";t.__esModule=!0;i(19);t.default={mounted:function(){},methods:{getMigratingConfig:function(){return{props:{},events:{}}}}}},function(e,t,i){"use strict";t.__esModule=!0;var n,r=i(0),s=(n=r)&&n.__esModule?n:{default:n},a=i(25);var o=[],l="@@clickoutsideContext",u=void 0,c=0;function d(e,t,i){return function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(i&&i.context&&n.target&&r.target)||e.contains(n.target)||e.contains(r.target)||e===n.target||i.context.popperElm&&(i.context.popperElm.contains(n.target)||i.context.popperElm.contains(r.target))||(t.expression&&e[l].methodName&&i.context[e[l].methodName]?i.context[e[l].methodName]():e[l].bindingFn&&e[l].bindingFn())}}!s.default.prototype.$isServer&&(0,a.on)(document,"mousedown",(function(e){return u=e})),!s.default.prototype.$isServer&&(0,a.on)(document,"mouseup",(function(e){o.forEach((function(t){return t[l].documentHandler(e,u)}))})),t.default={bind:function(e,t,i){o.push(e);var n=c++;e[l]={id:n,documentHandler:d(e,t,i),methodName:t.expression,bindingFn:t.value}},update:function(e,t,i){e[l].documentHandler=d(e,t,i),e[l].methodName=t.expression,e[l].bindingFn=t.value},unbind:function(e){for(var t=o.length,i=0;i-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,r=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var s=e._i(i,null);n.checked?s<0&&(e.model=i.concat([null])):s>-1&&(e.model=i.slice(0,s).concat(i.slice(s+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=e.label,a=e._i(i,s);n.checked?a<0&&(e.model=i.concat([s])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};n._withStripped=!0;var r=i(4),s={name:"ElCheckbox",mixins:[i.n(r).a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick((function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])}))}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},a=i(0),o=Object(a.a)(s,n,[],!1,null,null,null);o.options.__file="packages/checkbox/src/checkbox.vue";var l=o.exports;l.install=function(e){e.component(l.name,l)};t.default=l},4:function(e,t){e.exports=i(36)}})},function(e,t){var i=/^(attrs|props|on|nativeOn|class|style|hook)$/;function n(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce((function(e,t){var r,s,a,o,l;for(a in t)if(r=e[a],s=t[a],r&&i.test(a))if("class"===a&&("string"==typeof r&&(l=r,e[a]=r={},r[l]=!0),"string"==typeof s&&(l=s,t[a]=s={},s[l]=!0)),"on"===a||"nativeOn"===a||"hook"===a)for(o in s)r[o]=n(r[o],s[o]);else if(Array.isArray(r))e[a]=r.concat(s);else if(Array.isArray(s))e[a]=[r].concat(s);else for(o in s)r[o]=s[o];else e[a]=t[a];return e}),{})}},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=130)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},130:function(e,t,i){"use strict";i.r(t);var n={name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return-1!==["dark","light","plain"].indexOf(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,i=this.tagSize,n=this.hit,r=this.effect,s=e("span",{class:["el-tag",t?"el-tag--"+t:"",i?"el-tag--"+i:"",r?"el-tag--"+r:"",n&&"is-hit"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?s:e("transition",{attrs:{name:"el-zoom-in-center"}},[s])}},r=i(0),s=Object(r.a)(n,void 0,void 0,!1,null,null,null);s.options.__file="packages/tag/src/tag.vue";var a=s.exports;a.install=function(e){e.component(a.name,a)};t.default=a}})},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6));t.default=function(e,t,i,r,s,a){!e.required||i.hasOwnProperty(e.field)&&!n.isEmptyValue(t,a||e.type)||r.push(n.format(s.messages.required,e.fullField))}},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=108)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},108:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[i("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[i("span",{staticClass:"el-radio__inner"}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1",autocomplete:"off"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),i("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};n._withStripped=!0;var r=i(4),s={name:"ElRadio",mixins:[i.n(r).a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick((function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)}))}}},a=i(0),o=Object(a.a)(s,n,[],!1,null,null,null);o.options.__file="packages/radio/src/radio.vue";var l=o.exports;l.install=function(e){e.component(l.name,l)};t.default=l},4:function(e,t){e.exports=i(36)}})},function(e,t,i){},function(e,t,i){i(1)({target:"Object",stat:!0},{setPrototypeOf:i(74)})},function(e,t,i){var n=i(1),r=i(17),s=i(157),a=i(9),o=i(8),l=i(27),u=i(418),c=i(2),d=r("Reflect","construct"),h=c((function(){function e(){}return!(d((function(){}),[],e)instanceof e)})),p=!c((function(){d((function(){}))})),f=h||p;n({target:"Reflect",stat:!0,forced:f,sham:f},{construct:function(e,t){s(e),a(t);var i=arguments.length<3?e:s(arguments[2]);if(p&&!h)return d(e,t,i);if(e==i){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var n=[null];return n.push.apply(n,t),new(u.apply(e,n))}var r=i.prototype,c=l(o(r)?r:Object.prototype),f=Function.apply.call(e,c,t);return o(f)?f:c}})},function(e,t,i){},function(e,t,i){},function(e,t,i){var n=i(263),r=i(268),s=i(338),a=i(346),o=i(355),l=i(232),u=s((function(e){var t=l(e);return o(t)&&(t=void 0),a(n(e,1,o,!0),r(t,2))}));e.exports=u},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=45)}([function(e,t){e.exports=i(360)},function(e,t){e.exports=i(25)},function(e,t){e.exports=i(19)},function(e,t){e.exports=i(36)},function(e,t){e.exports=i(121)},function(e,t){e.exports=i(88)},function(e,t){e.exports=i(0)},function(e,t){e.exports=i(89)},function(e,t){e.exports=i(123)},function(e,t){e.exports=i(199)},function(e,t){e.exports=i(200)},function(e,t){e.exports=i(198)},function(e,t){e.exports=i(120)},function(e,t){e.exports=i(366)},function(e,t){e.exports=i(124)},function(e,t){e.exports=i(197)},function(e,t){e.exports=i(91)},function(e,t){e.exports=i(201)},function(e,t){e.exports=i(126)},function(e,t){e.exports=i(90)},function(e,t){e.exports=i(196)},function(e,t){e.exports=i(368)},function(e,t){e.exports=i(369)},function(e,t){e.exports=i(127)},function(e,t){e.exports=i(202)},function(e,t){e.exports=i(125)},function(e,t){e.exports=i(370)},function(e,t){e.exports=i(128)},function(e,t){e.exports=i(371)},function(e,t){e.exports=i(203)},function(e,t){e.exports=i(122)},function(e,t){e.exports=i(372)},function(e,t){e.exports=i(373)},function(e,t){e.exports=i(374)},function(e,t){e.exports=i(129)},function(e,t){e.exports=i(375)},function(e,t){e.exports=i(376)},function(e,t){e.exports=i(377)},function(e,t){e.exports=i(378)},function(e,t){e.exports=i(383)},function(e,t){e.exports=i(384)},function(e,t){e.exports=i(406)},function(e,t){e.exports=i(407)},function(e,t){e.exports=i(205)},function(e,t){e.exports=i(408)},function(e,t,i){e.exports=i(46)},function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ul",{staticClass:"el-pager",on:{click:e.onPagerClick}},[e.pageCount>0?i("li",{staticClass:"number",class:{active:1===e.currentPage,disabled:e.disabled}},[e._v("1")]):e._e(),e.showPrevMore?i("li",{staticClass:"el-icon more btn-quickprev",class:[e.quickprevIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("left")},mouseleave:function(t){e.quickprevIconClass="el-icon-more"}}}):e._e(),e._l(e.pagers,(function(t){return i("li",{key:t,staticClass:"number",class:{active:e.currentPage===t,disabled:e.disabled}},[e._v(e._s(t))])})),e.showNextMore?i("li",{staticClass:"el-icon more btn-quicknext",class:[e.quicknextIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("right")},mouseleave:function(t){e.quicknextIconClass="el-icon-more"}}}):e._e(),e.pageCount>1?i("li",{staticClass:"number",class:{active:e.currentPage===e.pageCount,disabled:e.disabled}},[e._v(e._s(e.pageCount))]):e._e()],2)};function r(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}n._withStripped=!0;var s=r({name:"ElPager",props:{currentPage:Number,pageCount:Number,pagerCount:Number,disabled:Boolean},watch:{showPrevMore:function(e){e||(this.quickprevIconClass="el-icon-more")},showNextMore:function(e){e||(this.quicknextIconClass="el-icon-more")}},methods:{onPagerClick:function(e){var t=e.target;if("UL"!==t.tagName&&!this.disabled){var i=Number(e.target.textContent),n=this.pageCount,r=this.currentPage,s=this.pagerCount-2;-1!==t.className.indexOf("more")&&(-1!==t.className.indexOf("quickprev")?i=r-s:-1!==t.className.indexOf("quicknext")&&(i=r+s)),isNaN(i)||(i<1&&(i=1),i>n&&(i=n)),i!==r&&this.$emit("change",i)}},onMouseenter:function(e){this.disabled||("left"===e?this.quickprevIconClass="el-icon-d-arrow-left":this.quicknextIconClass="el-icon-d-arrow-right")}},computed:{pagers:function(){var e=this.pagerCount,t=(e-1)/2,i=Number(this.currentPage),n=Number(this.pageCount),r=!1,s=!1;n>e&&(i>e-t&&(r=!0),i4&&e<22&&e%2==1},default:7},currentPage:{type:Number,default:1},layout:{default:"prev, pager, next, jumper, ->, total"},pageSizes:{type:Array,default:function(){return[10,20,30,40,50,100]}},popperClass:String,prevText:String,nextText:String,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean},data:function(){return{internalCurrentPage:1,internalPageSize:0,lastEmittedPage:-1,userChangePageSize:!1}},render:function(e){var t=this.layout;if(!t)return null;if(this.hideOnSinglePage&&(!this.internalPageCount||1===this.internalPageCount))return null;var i=e("div",{class:["el-pagination",{"is-background":this.background,"el-pagination--small":this.small}]}),n={prev:e("prev"),jumper:e("jumper"),pager:e("pager",{attrs:{currentPage:this.internalCurrentPage,pageCount:this.internalPageCount,pagerCount:this.pagerCount,disabled:this.disabled},on:{change:this.handleCurrentChange}}),next:e("next"),sizes:e("sizes",{attrs:{pageSizes:this.pageSizes}}),slot:e("slot",[this.$slots.default?this.$slots.default:""]),total:e("total")},r=t.split(",").map((function(e){return e.trim()})),s=e("div",{class:"el-pagination__rightwrapper"}),a=!1;return i.children=i.children||[],s.children=s.children||[],r.forEach((function(e){"->"!==e?a?s.children.push(n[e]):i.children.push(n[e]):a=!0})),a&&i.children.unshift(s),i},components:{Prev:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage<=1},class:"btn-prev",on:{click:this.$parent.prev}},[this.$parent.prevText?e("span",[this.$parent.prevText]):e("i",{class:"el-icon el-icon-arrow-left"})])}},Next:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage===this.$parent.internalPageCount||0===this.$parent.internalPageCount},class:"btn-next",on:{click:this.$parent.next}},[this.$parent.nextText?e("span",[this.$parent.nextText]):e("i",{class:"el-icon el-icon-arrow-right"})])}},Sizes:{mixins:[f.a],props:{pageSizes:Array},watch:{pageSizes:{immediate:!0,handler:function(e,t){Object(m.valueEquals)(e,t)||Array.isArray(e)&&(this.$parent.internalPageSize=e.indexOf(this.$parent.pageSize)>-1?this.$parent.pageSize:this.pageSizes[0])}}},render:function(e){var t=this;return e("span",{class:"el-pagination__sizes"},[e("el-select",{attrs:{value:this.$parent.internalPageSize,popperClass:this.$parent.popperClass||"",size:"mini",disabled:this.$parent.disabled},on:{input:this.handleChange}},[this.pageSizes.map((function(i){return e("el-option",{attrs:{value:i,label:i+t.t("el.pagination.pagesize")}})}))])])},components:{ElSelect:l.a,ElOption:c.a},methods:{handleChange:function(e){e!==this.$parent.internalPageSize&&(this.$parent.internalPageSize=e=parseInt(e,10),this.$parent.userChangePageSize=!0,this.$parent.$emit("update:pageSize",e),this.$parent.$emit("size-change",e))}}},Jumper:{mixins:[f.a],components:{ElInput:h.a},data:function(){return{userInput:null}},watch:{"$parent.internalCurrentPage":function(){this.userInput=null}},methods:{handleKeyup:function(e){var t=e.keyCode,i=e.target;13===t&&this.handleChange(i.value)},handleInput:function(e){this.userInput=e},handleChange:function(e){this.$parent.internalCurrentPage=this.$parent.getValidCurrentPage(e),this.$parent.emitChange(),this.userInput=null}},render:function(e){return e("span",{class:"el-pagination__jump"},[this.t("el.pagination.goto"),e("el-input",{class:"el-pagination__editor is-in-pagination",attrs:{min:1,max:this.$parent.internalPageCount,value:null!==this.userInput?this.userInput:this.$parent.internalCurrentPage,type:"number",disabled:this.$parent.disabled},nativeOn:{keyup:this.handleKeyup},on:{input:this.handleInput,change:this.handleChange}}),this.t("el.pagination.pageClassifier")])}},Total:{mixins:[f.a],render:function(e){return"number"==typeof this.$parent.total?e("span",{class:"el-pagination__total"},[this.t("el.pagination.total",{total:this.$parent.total})]):""}},Pager:a},methods:{handleCurrentChange:function(e){this.internalCurrentPage=this.getValidCurrentPage(e),this.userChangePageSize=!0,this.emitChange()},prev:function(){if(!this.disabled){var e=this.internalCurrentPage-1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("prev-click",this.internalCurrentPage),this.emitChange()}},next:function(){if(!this.disabled){var e=this.internalCurrentPage+1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("next-click",this.internalCurrentPage),this.emitChange()}},getValidCurrentPage:function(e){e=parseInt(e,10);var t=void 0;return"number"==typeof this.internalPageCount?e<1?t=1:e>this.internalPageCount&&(t=this.internalPageCount):(isNaN(e)||e<1)&&(t=1),(void 0===t&&isNaN(e)||0===t)&&(t=1),void 0===t?e:t},emitChange:function(){var e=this;this.$nextTick((function(){(e.internalCurrentPage!==e.lastEmittedPage||e.userChangePageSize)&&(e.$emit("current-change",e.internalCurrentPage),e.lastEmittedPage=e.internalCurrentPage,e.userChangePageSize=!1)}))}},computed:{internalPageCount:function(){return"number"==typeof this.total?Math.max(1,Math.ceil(this.total/this.internalPageSize)):"number"==typeof this.pageCount?Math.max(1,this.pageCount):null}},watch:{currentPage:{immediate:!0,handler:function(e){this.internalCurrentPage=this.getValidCurrentPage(e)}},pageSize:{immediate:!0,handler:function(e){this.internalPageSize=isNaN(e)?10:e}},internalCurrentPage:{immediate:!0,handler:function(e){this.$emit("update:currentPage",e),this.lastEmittedPage=-1}},internalPageCount:function(e){var t=this.internalCurrentPage;e>0&&0===t?this.internalCurrentPage=1:t>e&&(this.internalCurrentPage=0===e?1:e,this.userChangePageSize&&this.emitChange()),this.userChangePageSize=!1}},install:function(e){e.component(v.name,v)}},g=v,_=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"dialog-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-dialog__wrapper",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{key:e.key,ref:"dialog",class:["el-dialog",{"is-fullscreen":e.fullscreen,"el-dialog--center":e.center},e.customClass],style:e.style,attrs:{role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"}},[i("div",{staticClass:"el-dialog__header"},[e._t("title",[i("span",{staticClass:"el-dialog__title"},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-dialog__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:e.handleClose}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2),e.rendered?i("div",{staticClass:"el-dialog__body"},[e._t("default")],2):e._e(),e.$slots.footer?i("div",{staticClass:"el-dialog__footer"},[e._t("footer")],2):e._e()])])])};_._withStripped=!0;var b=i(11),y=i.n(b),x=i(9),k=i.n(x),w=i(3),C=i.n(w),S=r({name:"ElDialog",mixins:[y.a,C.a,k.a],props:{title:{type:String,default:""},modal:{type:Boolean,default:!0},modalAppendToBody:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},width:String,fullscreen:Boolean,customClass:{type:String,default:""},top:{type:String,default:"15vh"},beforeClose:Function,center:{type:Boolean,default:!1},destroyOnClose:Boolean},data:function(){return{closed:!1,key:0}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.$el.addEventListener("scroll",this.updatePopper),this.$nextTick((function(){t.$refs.dialog.scrollTop=0})),this.appendToBody&&document.body.appendChild(this.$el)):(this.$el.removeEventListener("scroll",this.updatePopper),this.closed||this.$emit("close"),this.destroyOnClose&&this.$nextTick((function(){t.key++})))}},computed:{style:function(){var e={};return this.fullscreen||(e.marginTop=this.top,this.width&&(e.width=this.width)),e}},methods:{getMigratingConfig:function(){return{props:{size:"size is removed."}}},handleWrapperClick:function(){this.closeOnClickModal&&this.handleClose()},handleClose:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),this.closed=!0)},updatePopper:function(){this.broadcast("ElSelectDropdown","updatePopper"),this.broadcast("ElDropdownMenu","updatePopper")},afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},_,[],!1,null,null,null);S.options.__file="packages/dialog/src/component.vue";var O=S.exports;O.install=function(e){e.component(O.name,O)};var D=O,E=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.close,expression:"close"}],staticClass:"el-autocomplete",attrs:{"aria-haspopup":"listbox",role:"combobox","aria-expanded":e.suggestionVisible,"aria-owns":e.id}},[i("el-input",e._b({ref:"input",on:{input:e.handleInput,change:e.handleChange,focus:e.handleFocus,blur:e.handleBlur,clear:e.handleClear},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex-1)},function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex+1)},function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleKeyEnter(t)},function(t){return!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:e.close(t)}]}},"el-input",[e.$props,e.$attrs],!1),[e.$slots.prepend?i("template",{slot:"prepend"},[e._t("prepend")],2):e._e(),e.$slots.append?i("template",{slot:"append"},[e._t("append")],2):e._e(),e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),e.$slots.suffix?i("template",{slot:"suffix"},[e._t("suffix")],2):e._e()],2),i("el-autocomplete-suggestions",{ref:"suggestions",class:[e.popperClass?e.popperClass:""],attrs:{"visible-arrow":"","popper-options":e.popperOptions,"append-to-body":e.popperAppendToBody,placement:e.placement,id:e.id}},e._l(e.suggestions,(function(t,n){return i("li",{key:n,class:{highlighted:e.highlightedIndex===n},attrs:{id:e.id+"-item-"+n,role:"option","aria-selected":e.highlightedIndex===n},on:{click:function(i){e.select(t)}}},[e._t("default",[e._v("\n "+e._s(t[e.valueKey])+"\n ")],{item:t})],2)})),0)],1)};E._withStripped=!0;var T=i(16),$=i.n(T),P=i(10),j=i.n(P),M=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-autocomplete-suggestion el-popper",class:{"is-loading":!e.parent.hideLoading&&e.parent.loading},style:{width:e.dropdownWidth},attrs:{role:"region"}},[i("el-scrollbar",{attrs:{tag:"ul","wrap-class":"el-autocomplete-suggestion__wrap","view-class":"el-autocomplete-suggestion__list"}},[!e.parent.hideLoading&&e.parent.loading?i("li",[i("i",{staticClass:"el-icon-loading"})]):e._t("default")],2)],1)])};M._withStripped=!0;var I=i(5),A=i.n(I),N=i(18),L=i.n(N),F=r({components:{ElScrollbar:L.a},mixins:[A.a,C.a],componentName:"ElAutocompleteSuggestions",data:function(){return{parent:this.$parent,dropdownWidth:""}},props:{options:{default:function(){return{gpuAcceleration:!1}}},id:String},methods:{select:function(e){this.dispatch("ElAutocomplete","item-click",e)}},updated:function(){var e=this;this.$nextTick((function(t){e.popperJS&&e.updatePopper()}))},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$refs.input.$refs.input||this.$parent.$refs.input.$refs.textarea,this.referenceList=this.$el.querySelector(".el-autocomplete-suggestion__list"),this.referenceList.setAttribute("role","listbox"),this.referenceList.setAttribute("id",this.id)},created:function(){var e=this;this.$on("visible",(function(t,i){e.dropdownWidth=i+"px",e.showPopper=t}))}},M,[],!1,null,null,null);F.options.__file="packages/autocomplete/src/autocomplete-suggestions.vue";var V=F.exports,z=i(23),R=i.n(z),B=r({name:"ElAutocomplete",mixins:[C.a,R()("input"),k.a],inheritAttrs:!1,componentName:"ElAutocomplete",components:{ElInput:h.a,ElAutocompleteSuggestions:V},directives:{Clickoutside:j.a},props:{valueKey:{type:String,default:"value"},popperClass:String,popperOptions:Object,placeholder:String,clearable:{type:Boolean,default:!1},disabled:Boolean,name:String,size:String,value:String,maxlength:Number,minlength:Number,autofocus:Boolean,fetchSuggestions:Function,triggerOnFocus:{type:Boolean,default:!0},customItem:String,selectWhenUnmatched:{type:Boolean,default:!1},prefixIcon:String,suffixIcon:String,label:String,debounce:{type:Number,default:300},placement:{type:String,default:"bottom-start"},hideLoading:Boolean,popperAppendToBody:{type:Boolean,default:!0},highlightFirstItem:{type:Boolean,default:!1}},data:function(){return{activated:!1,suggestions:[],loading:!1,highlightedIndex:-1,suggestionDisabled:!1}},computed:{suggestionVisible:function(){var e=this.suggestions;return(Array.isArray(e)&&e.length>0||this.loading)&&this.activated},id:function(){return"el-autocomplete-"+Object(m.generateId)()}},watch:{suggestionVisible:function(e){var t=this.getInput();t&&this.broadcast("ElAutocompleteSuggestions","visible",[e,t.offsetWidth])}},methods:{getMigratingConfig:function(){return{props:{"custom-item":"custom-item is removed, use scoped slot instead.",props:"props is removed, use value-key instead."}}},getData:function(e){var t=this;this.suggestionDisabled||(this.loading=!0,this.fetchSuggestions(e,(function(e){t.loading=!1,t.suggestionDisabled||(Array.isArray(e)?(t.suggestions=e,t.highlightedIndex=t.highlightFirstItem?0:-1):console.error("[Element Error][Autocomplete]autocomplete suggestions must be an array"))})))},handleInput:function(e){if(this.$emit("input",e),this.suggestionDisabled=!1,!this.triggerOnFocus&&!e)return this.suggestionDisabled=!0,void(this.suggestions=[]);this.debouncedGetData(e)},handleChange:function(e){this.$emit("change",e)},handleFocus:function(e){this.activated=!0,this.$emit("focus",e),this.triggerOnFocus&&this.debouncedGetData(this.value)},handleBlur:function(e){this.$emit("blur",e)},handleClear:function(){this.activated=!1,this.$emit("clear")},close:function(e){this.activated=!1},handleKeyEnter:function(e){var t=this;this.suggestionVisible&&this.highlightedIndex>=0&&this.highlightedIndex=this.suggestions.length&&(e=this.suggestions.length-1);var t=this.$refs.suggestions.$el.querySelector(".el-autocomplete-suggestion__wrap"),i=t.querySelectorAll(".el-autocomplete-suggestion__list li")[e],n=t.scrollTop,r=i.offsetTop;r+i.scrollHeight>n+t.clientHeight&&(t.scrollTop+=i.scrollHeight),r=0&&this.resetTabindex(this.triggerElm),clearTimeout(this.timeout),this.timeout=setTimeout((function(){e.visible=!1}),"click"===this.trigger?0:this.hideTimeout))},handleClick:function(){this.disabled||(this.visible?this.hide():this.show())},handleTriggerKeyDown:function(e){var t=e.keyCode;[38,40].indexOf(t)>-1?(this.removeTabindex(),this.resetTabindex(this.menuItems[0]),this.menuItems[0].focus(),e.preventDefault(),e.stopPropagation()):13===t?this.handleClick():[9,27].indexOf(t)>-1&&this.hide()},handleItemKeyDown:function(e){var t=e.keyCode,i=e.target,n=this.menuItemsArray.indexOf(i),r=this.menuItemsArray.length-1,s=void 0;[38,40].indexOf(t)>-1?(s=38===t?0!==n?n-1:0:n-1&&(this.hide(),this.triggerElmFocus())},resetTabindex:function(e){this.removeTabindex(),e.setAttribute("tabindex","0")},removeTabindex:function(){this.triggerElm.setAttribute("tabindex","-1"),this.menuItemsArray.forEach((function(e){e.setAttribute("tabindex","-1")}))},initAria:function(){this.dropdownElm.setAttribute("id",this.listId),this.triggerElm.setAttribute("aria-haspopup","list"),this.triggerElm.setAttribute("aria-controls",this.listId),this.splitButton||(this.triggerElm.setAttribute("role","button"),this.triggerElm.setAttribute("tabindex",this.tabindex),this.triggerElm.setAttribute("class",(this.triggerElm.getAttribute("class")||"")+" el-dropdown-selfdefine"))},initEvent:function(){var e=this,t=this.trigger,i=this.show,n=this.hide,r=this.handleClick,s=this.splitButton,a=this.handleTriggerKeyDown,o=this.handleItemKeyDown;this.triggerElm=s?this.$refs.trigger.$el:this.$slots.default[0].elm;var l=this.dropdownElm;this.triggerElm.addEventListener("keydown",a),l.addEventListener("keydown",o,!0),s||(this.triggerElm.addEventListener("focus",(function(){e.focusing=!0})),this.triggerElm.addEventListener("blur",(function(){e.focusing=!1})),this.triggerElm.addEventListener("click",(function(){e.focusing=!1}))),"hover"===t?(this.triggerElm.addEventListener("mouseenter",i),this.triggerElm.addEventListener("mouseleave",n),l.addEventListener("mouseenter",i),l.addEventListener("mouseleave",n)):"click"===t&&this.triggerElm.addEventListener("click",r)},handleMenuItemClick:function(e,t){this.hideOnClick&&(this.visible=!1),this.$emit("command",e,t)},triggerElmFocus:function(){this.triggerElm.focus&&this.triggerElm.focus()},initDomOperation:function(){this.dropdownElm=this.popperElm,this.menuItems=this.dropdownElm.querySelectorAll("[tabindex='-1']"),this.menuItemsArray=[].slice.call(this.menuItems),this.initEvent(),this.initAria()}},render:function(e){var t=this,i=this.hide,n=this.splitButton,r=this.type,s=this.dropdownSize,a=this.disabled,o=null;if(n)o=e("el-button-group",[e("el-button",{attrs:{type:r,size:s,disabled:a},nativeOn:{click:function(e){t.$emit("click",e),i()}}},[this.$slots.default]),e("el-button",{ref:"trigger",attrs:{type:r,size:s,disabled:a},class:"el-dropdown__caret-button"},[e("i",{class:"el-dropdown__icon el-icon-arrow-down"})])]);else{var l=(o=this.$slots.default)[0].data||{},u=l.attrs,c=void 0===u?{}:u;a&&!c.disabled&&(c.disabled=!0,l.attrs=c)}var d=a?null:this.$slots.dropdown;return e("div",{class:"el-dropdown",directives:[{name:"clickoutside",value:i}],attrs:{"aria-disabled":a}},[o,d])}},void 0,void 0,!1,null,null,null);K.options.__file="packages/dropdown/src/dropdown.vue";var X=K.exports;X.install=function(e){e.component(X.name,X)};var Z=X,Q=function(){var e=this.$createElement,t=this._self._c||e;return t("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":this.doDestroy}},[t("ul",{directives:[{name:"show",rawName:"v-show",value:this.showPopper,expression:"showPopper"}],staticClass:"el-dropdown-menu el-popper",class:[this.size&&"el-dropdown-menu--"+this.size]},[this._t("default")],2)])};Q._withStripped=!0;var J=r({name:"ElDropdownMenu",componentName:"ElDropdownMenu",mixins:[A.a],props:{visibleArrow:{type:Boolean,default:!0},arrowOffset:{type:Number,default:0}},data:function(){return{size:this.dropdown.dropdownSize}},inject:["dropdown"],created:function(){var e=this;this.$on("updatePopper",(function(){e.showPopper&&e.updatePopper()})),this.$on("visible",(function(t){e.showPopper=t}))},mounted:function(){this.dropdown.popperElm=this.popperElm=this.$el,this.referenceElm=this.dropdown.$el,this.dropdown.initDomOperation()},watch:{"dropdown.placement":{immediate:!0,handler:function(e){this.currentPlacement=e}}}},Q,[],!1,null,null,null);J.options.__file="packages/dropdown/src/dropdown-menu.vue";var ee=J.exports;ee.install=function(e){e.component(ee.name,ee)};var te=ee,ie=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-dropdown-menu__item",class:{"is-disabled":e.disabled,"el-dropdown-menu__item--divided":e.divided},attrs:{"aria-disabled":e.disabled,tabindex:e.disabled?null:-1},on:{click:e.handleClick}},[e.icon?i("i",{class:e.icon}):e._e(),e._t("default")],2)};ie._withStripped=!0;var ne=r({name:"ElDropdownItem",mixins:[C.a],props:{command:{},disabled:Boolean,divided:Boolean,icon:String},methods:{handleClick:function(e){this.dispatch("ElDropdown","menu-item-click",[this.command,this])}}},ie,[],!1,null,null,null);ne.options.__file="packages/dropdown/src/dropdown-item.vue";var re=ne.exports;re.install=function(e){e.component(re.name,re)};var se=re,ae=ae||{};ae.Utils=ae.Utils||{},ae.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var i=e.childNodes[t];if(ae.Utils.attemptFocus(i)||ae.Utils.focusLastDescendant(i))return!0}return!1},ae.Utils.attemptFocus=function(e){if(!ae.Utils.isFocusable(e))return!1;ae.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return ae.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},ae.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},ae.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),r=arguments.length,s=Array(r>2?r-2:0),a=2;a=0;t--)e.splice(t,0,e[t]);e=e.join("")}return/^[0-9a-fA-F]{6}$/.test(e)?{red:parseInt(e.slice(0,2),16),green:parseInt(e.slice(2,4),16),blue:parseInt(e.slice(4,6),16)}:{red:255,green:255,blue:255}},mixColor:function(e,t){var i=this.getColorChannels(e),n=i.red,r=i.green,s=i.blue;return t>0?(n*=1-t,r*=1-t,s*=1-t):(n+=(255-n)*t,r+=(255-r)*t,s+=(255-s)*t),"rgb("+Math.round(n)+", "+Math.round(r)+", "+Math.round(s)+")"},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},openMenu:function(e,t){var i=this.openedMenus;-1===i.indexOf(e)&&(this.uniqueOpened&&(this.openedMenus=i.filter((function(e){return-1!==t.indexOf(e)}))),this.openedMenus.push(e))},closeMenu:function(e){var t=this.openedMenus.indexOf(e);-1!==t&&this.openedMenus.splice(t,1)},handleSubmenuClick:function(e){var t=e.index,i=e.indexPath;-1!==this.openedMenus.indexOf(t)?(this.closeMenu(t),this.$emit("close",t,i)):(this.openMenu(t,i),this.$emit("open",t,i))},handleItemClick:function(e){var t=this,i=e.index,n=e.indexPath,r=this.activeIndex,s=null!==e.index;s&&(this.activeIndex=e.index),this.$emit("select",i,n,e),("horizontal"===this.mode||this.collapse)&&(this.openedMenus=[]),this.router&&s&&this.routeToItem(e,(function(e){if(t.activeIndex=r,e){if("NavigationDuplicated"===e.name)return;console.error(e)}}))},initOpenedMenu:function(){var e=this,t=this.activeIndex,i=this.items[t];i&&"horizontal"!==this.mode&&!this.collapse&&i.indexPath.forEach((function(t){var i=e.submenus[t];i&&e.openMenu(t,i.indexPath)}))},routeToItem:function(e,t){var i=e.route||e.index;try{this.$router.push(i,(function(){}),t)}catch(e){console.error(e)}},open:function(e){var t=this,i=this.submenus[e.toString()].indexPath;i.forEach((function(e){return t.openMenu(e,i)}))},close:function(e){this.closeMenu(e)}},mounted:function(){this.initOpenedMenu(),this.$on("item-click",this.handleItemClick),this.$on("submenu-click",this.handleSubmenuClick),"horizontal"===this.mode&&new pe(this.$el),this.$watch("items",this.updateActiveIndex)}},void 0,void 0,!1,null,null,null);me.options.__file="packages/menu/src/menu.vue";var ve=me.exports;ve.install=function(e){e.component(ve.name,ve)};var ge=ve,_e=i(21),be=i.n(_e),ye={inject:["rootMenu"],computed:{indexPath:function(){for(var e=[this.index],t=this.$parent;"ElMenu"!==t.$options.componentName;)t.index&&e.unshift(t.index),t=t.$parent;return e},parentMenu:function(){for(var e=this.$parent;e&&-1===["ElMenu","ElSubmenu"].indexOf(e.$options.componentName);)e=e.$parent;return e},paddingStyle:function(){if("vertical"!==this.rootMenu.mode)return{};var e=20,t=this.$parent;if(this.rootMenu.collapse)e=20;else for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return{paddingLeft:e+"px"}}}},xe={props:{transformOrigin:{type:[Boolean,String],default:!1},offset:A.a.props.offset,boundariesPadding:A.a.props.boundariesPadding,popperOptions:A.a.props.popperOptions},data:A.a.data,methods:A.a.methods,beforeDestroy:A.a.beforeDestroy,deactivated:A.a.deactivated},ke=r({name:"ElSubmenu",componentName:"ElSubmenu",mixins:[ye,C.a,xe],components:{ElCollapseTransition:be.a},props:{index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0}},data:function(){return{popperJS:null,timeout:null,items:{},submenus:{},mouseInChild:!1}},watch:{opened:function(e){var t=this;this.isMenuPopup&&this.$nextTick((function(e){t.updatePopper()}))}},computed:{appendToBody:function(){return void 0===this.popperAppendToBody?this.isFirstLevel:this.popperAppendToBody},menuTransitionName:function(){return this.rootMenu.collapse?"el-zoom-in-left":"el-zoom-in-top"},opened:function(){return this.rootMenu.openedMenus.indexOf(this.index)>-1},active:function(){var e=!1,t=this.submenus,i=this.items;return Object.keys(i).forEach((function(t){i[t].active&&(e=!0)})),Object.keys(t).forEach((function(i){t[i].active&&(e=!0)})),e},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},isMenuPopup:function(){return this.rootMenu.isMenuPopup},titleStyle:function(){return"horizontal"!==this.mode?{color:this.textColor}:{borderBottomColor:this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent",color:this.active?this.activeTextColor:this.textColor}},isFirstLevel:function(){for(var e=!0,t=this.$parent;t&&t!==this.rootMenu;){if(["ElSubmenu","ElMenuItemGroup"].indexOf(t.$options.componentName)>-1){e=!1;break}t=t.$parent}return e}},methods:{handleCollapseToggle:function(e){e?this.initPopper():this.doDestroy()},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},handleClick:function(){var e=this.rootMenu,t=this.disabled;"hover"===e.menuTrigger&&"horizontal"===e.mode||e.collapse&&"vertical"===e.mode||t||this.dispatch("ElMenu","submenu-click",this)},handleMouseenter:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.showTimeout;if("ActiveXObject"in window||"focus"!==e.type||e.relatedTarget){var n=this.rootMenu,r=this.disabled;"click"===n.menuTrigger&&"horizontal"===n.mode||!n.collapse&&"vertical"===n.mode||r||(this.dispatch("ElSubmenu","mouse-enter-child"),clearTimeout(this.timeout),this.timeout=setTimeout((function(){t.rootMenu.openMenu(t.index,t.indexPath)}),i),this.appendToBody&&this.$parent.$el.dispatchEvent(new MouseEvent("mouseenter")))}},handleMouseleave:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.rootMenu;"click"===i.menuTrigger&&"horizontal"===i.mode||!i.collapse&&"vertical"===i.mode||(this.dispatch("ElSubmenu","mouse-leave-child"),clearTimeout(this.timeout),this.timeout=setTimeout((function(){!e.mouseInChild&&e.rootMenu.closeMenu(e.index)}),this.hideTimeout),this.appendToBody&&t&&"ElSubmenu"===this.$parent.$options.name&&this.$parent.handleMouseleave(!0))},handleTitleMouseenter:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.hoverBackground)}},handleTitleMouseleave:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.backgroundColor||"")}},updatePlacement:function(){this.currentPlacement="horizontal"===this.mode&&this.isFirstLevel?"bottom-start":"right-start"},initPopper:function(){this.referenceElm=this.$el,this.popperElm=this.$refs.menu,this.updatePlacement()}},created:function(){var e=this;this.$on("toggle-collapse",this.handleCollapseToggle),this.$on("mouse-enter-child",(function(){e.mouseInChild=!0,clearTimeout(e.timeout)})),this.$on("mouse-leave-child",(function(){e.mouseInChild=!1,clearTimeout(e.timeout)}))},mounted:function(){this.parentMenu.addSubmenu(this),this.rootMenu.addSubmenu(this),this.initPopper()},beforeDestroy:function(){this.parentMenu.removeSubmenu(this),this.rootMenu.removeSubmenu(this)},render:function(e){var t=this,i=this.active,n=this.opened,r=this.paddingStyle,s=this.titleStyle,a=this.backgroundColor,o=this.rootMenu,l=this.currentPlacement,u=this.menuTransitionName,c=this.mode,d=this.disabled,h=this.popperClass,p=this.$slots,f=this.isFirstLevel,m=e("transition",{attrs:{name:u}},[e("div",{ref:"menu",directives:[{name:"show",value:n}],class:["el-menu--"+c,h],on:{mouseenter:function(e){return t.handleMouseenter(e,100)},mouseleave:function(){return t.handleMouseleave(!0)},focus:function(e){return t.handleMouseenter(e,100)}}},[e("ul",{attrs:{role:"menu"},class:["el-menu el-menu--popup","el-menu--popup-"+l],style:{backgroundColor:o.backgroundColor||""}},[p.default])])]),v=e("el-collapse-transition",[e("ul",{attrs:{role:"menu"},class:"el-menu el-menu--inline",directives:[{name:"show",value:n}],style:{backgroundColor:o.backgroundColor||""}},[p.default])]),g="horizontal"===o.mode&&f||"vertical"===o.mode&&!o.collapse?"el-icon-arrow-down":"el-icon-arrow-right";return e("li",{class:{"el-submenu":!0,"is-active":i,"is-opened":n,"is-disabled":d},attrs:{role:"menuitem","aria-haspopup":"true","aria-expanded":n},on:{mouseenter:this.handleMouseenter,mouseleave:function(){return t.handleMouseleave(!1)},focus:this.handleMouseenter}},[e("div",{class:"el-submenu__title",ref:"submenu-title",on:{click:this.handleClick,mouseenter:this.handleTitleMouseenter,mouseleave:this.handleTitleMouseleave},style:[r,s,{backgroundColor:a}]},[p.title,e("i",{class:["el-submenu__icon-arrow",g]})]),this.isMenuPopup?m:v])}},void 0,void 0,!1,null,null,null);ke.options.__file="packages/menu/src/submenu.vue";var we=ke.exports;we.install=function(e){e.component(we.name,we)};var Ce=we,Se=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-menu-item",class:{"is-active":e.active,"is-disabled":e.disabled},style:[e.paddingStyle,e.itemStyle,{backgroundColor:e.backgroundColor}],attrs:{role:"menuitem",tabindex:"-1"},on:{click:e.handleClick,mouseenter:e.onMouseEnter,focus:e.onMouseEnter,blur:e.onMouseLeave,mouseleave:e.onMouseLeave}},["ElMenu"===e.parentMenu.$options.componentName&&e.rootMenu.collapse&&e.$slots.title?i("el-tooltip",{attrs:{effect:"dark",placement:"right"}},[i("div",{attrs:{slot:"content"},slot:"content"},[e._t("title")],2),i("div",{staticStyle:{position:"absolute",left:"0",top:"0",height:"100%",width:"100%",display:"inline-block","box-sizing":"border-box",padding:"0 20px"}},[e._t("default")],2)]):[e._t("default"),e._t("title")]],2)};Se._withStripped=!0;var Oe=i(26),De=i.n(Oe),Ee=r({name:"ElMenuItem",componentName:"ElMenuItem",mixins:[ye,C.a],components:{ElTooltip:De.a},props:{index:{default:null,validator:function(e){return"string"==typeof e||null===e}},route:[String,Object],disabled:Boolean},computed:{active:function(){return this.index===this.rootMenu.activeIndex},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},itemStyle:function(){var e={color:this.active?this.activeTextColor:this.textColor};return"horizontal"!==this.mode||this.isNested||(e.borderBottomColor=this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent"),e},isNested:function(){return this.parentMenu!==this.rootMenu}},methods:{onMouseEnter:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.hoverBackground)},onMouseLeave:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.backgroundColor)},handleClick:function(){this.disabled||(this.dispatch("ElMenu","item-click",this),this.$emit("click",this))}},mounted:function(){this.parentMenu.addItem(this),this.rootMenu.addItem(this)},beforeDestroy:function(){this.parentMenu.removeItem(this),this.rootMenu.removeItem(this)}},Se,[],!1,null,null,null);Ee.options.__file="packages/menu/src/menu-item.vue";var Te=Ee.exports;Te.install=function(e){e.component(Te.name,Te)};var $e=Te,Pe=function(){var e=this.$createElement,t=this._self._c||e;return t("li",{staticClass:"el-menu-item-group"},[t("div",{staticClass:"el-menu-item-group__title",style:{paddingLeft:this.levelPadding+"px"}},[this.$slots.title?this._t("title"):[this._v(this._s(this.title))]],2),t("ul",[this._t("default")],2)])};Pe._withStripped=!0;var je=r({name:"ElMenuItemGroup",componentName:"ElMenuItemGroup",inject:["rootMenu"],props:{title:{type:String}},data:function(){return{paddingLeft:20}},computed:{levelPadding:function(){var e=20,t=this.$parent;if(this.rootMenu.collapse)return 20;for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return e}}},Pe,[],!1,null,null,null);je.options.__file="packages/menu/src/menu-item-group.vue";var Me=je.exports;Me.install=function(e){e.component(Me.name,Me)};var Ie=Me,Ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{mousedown:function(e){e.preventDefault()},click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionupdate:e.handleCompositionUpdate,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)};Ae._withStripped=!0;var Ne=void 0,Le="\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",Fe=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function Ve(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),r=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:Fe.map((function(e){return e+":"+t.getPropertyValue(e)})).join(";"),paddingSize:n,borderSize:r,boxSizing:i}}function ze(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;Ne||(Ne=document.createElement("textarea"),document.body.appendChild(Ne));var n=Ve(e),r=n.paddingSize,s=n.borderSize,a=n.boxSizing,o=n.contextStyle;Ne.setAttribute("style",o+";"+Le),Ne.value=e.value||e.placeholder||"";var l=Ne.scrollHeight,u={};"border-box"===a?l+=s:"content-box"===a&&(l-=r),Ne.value="";var c=Ne.scrollHeight-r;if(null!==t){var d=c*t;"border-box"===a&&(d=d+r+s),l=Math.max(d,l),u.minHeight=d+"px"}if(null!==i){var h=c*i;"border-box"===a&&(h=h+r+s),l=Math.min(h,l)}return u.height=l+"px",Ne.parentNode&&Ne.parentNode.removeChild(Ne),Ne=null,u}var Re=i(7),Be=i.n(Re),He=i(19),We=r({name:"ElInput",componentName:"ElInput",mixins:[C.a,k.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return Be()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick((function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()}))}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=ze(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:ze(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionUpdate:function(e){var t=e.target.value,i=t[t.length-1]||"";this.isComposing=!Object(He.isKorean)(i)},handleCompositionEnd:function(e){this.isComposing&&(this.isComposing=!1,this.handleInput(e))},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,r=i(t);return void 0!==n?(r>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),r)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||!!(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},Ge,[],!1,null,null,null);Ke.options.__file="packages/input-number/src/input-number.vue";var Xe=Ke.exports;Xe.install=function(e){e.component(Xe.name,Xe)};var Ze=Xe,Qe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[i("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[i("span",{staticClass:"el-radio__inner"}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1",autocomplete:"off"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),i("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};Qe._withStripped=!0;var Je=r({name:"ElRadio",mixins:[C.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick((function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)}))}}},Qe,[],!1,null,null,null);Je.options.__file="packages/radio/src/radio.vue";var et=Je.exports;et.install=function(e){e.component(et.name,et)};var tt=et,it=function(){var e=this.$createElement;return(this._self._c||e)(this._elTag,{tag:"component",staticClass:"el-radio-group",attrs:{role:"radiogroup"},on:{keydown:this.handleKeydown}},[this._t("default")],2)};it._withStripped=!0;var nt=Object.freeze({LEFT:37,UP:38,RIGHT:39,DOWN:40}),rt=r({name:"ElRadioGroup",componentName:"ElRadioGroup",inject:{elFormItem:{default:""}},mixins:[C.a],props:{value:{},size:String,fill:String,textColor:String,disabled:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},_elTag:function(){var e=(this.$vnode.data||{}).tag;return e&&"component"!==e||(e="div"),e},radioGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},created:function(){var e=this;this.$on("handleChange",(function(t){e.$emit("change",t)}))},mounted:function(){var e=this.$el.querySelectorAll("[type=radio]"),t=this.$el.querySelectorAll("[role=radio]")[0];![].some.call(e,(function(e){return e.checked}))&&t&&(t.tabIndex=0)},methods:{handleKeydown:function(e){var t=e.target,i="INPUT"===t.nodeName?"[type=radio]":"[role=radio]",n=this.$el.querySelectorAll(i),r=n.length,s=[].indexOf.call(n,t),a=this.$el.querySelectorAll("[role=radio]");switch(e.keyCode){case nt.LEFT:case nt.UP:e.stopPropagation(),e.preventDefault(),0===s?(a[r-1].click(),a[r-1].focus()):(a[s-1].click(),a[s-1].focus());break;case nt.RIGHT:case nt.DOWN:s===r-1?(e.stopPropagation(),e.preventDefault(),a[0].click(),a[0].focus()):(a[s+1].click(),a[s+1].focus())}}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[this.value])}}},it,[],!1,null,null,null);rt.options.__file="packages/radio/src/radio-group.vue";var st=rt.exports;st.install=function(e){e.component(st.name,st)};var at=st,ot=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio-button",class:[e.size?"el-radio-button--"+e.size:"",{"is-active":e.value===e.label},{"is-disabled":e.isDisabled},{"is-focus":e.focus}],attrs:{role:"radio","aria-checked":e.value===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.value=e.isDisabled?e.value:e.label}}},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.value,expression:"value"}],staticClass:"el-radio-button__orig-radio",attrs:{type:"radio",name:e.name,disabled:e.isDisabled,tabindex:"-1",autocomplete:"off"},domProps:{value:e.label,checked:e._q(e.value,e.label)},on:{change:[function(t){e.value=e.label},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),i("span",{staticClass:"el-radio-button__inner",style:e.value===e.label?e.activeStyle:null,on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};ot._withStripped=!0;var lt=r({name:"ElRadioButton",mixins:[C.a],inject:{elForm:{default:""},elFormItem:{default:""}},props:{label:{},disabled:Boolean,name:String},data:function(){return{focus:!1}},computed:{value:{get:function(){return this._radioGroup.value},set:function(e){this._radioGroup.$emit("input",e)}},_radioGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return e;e=e.$parent}return!1},activeStyle:function(){return{backgroundColor:this._radioGroup.fill||"",borderColor:this._radioGroup.fill||"",boxShadow:this._radioGroup.fill?"-1px 0 0 0 "+this._radioGroup.fill:"",color:this._radioGroup.textColor||""}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._radioGroup.radioGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isDisabled:function(){return this.disabled||this._radioGroup.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this._radioGroup&&this.value!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick((function(){e.dispatch("ElRadioGroup","handleChange",e.value)}))}}},ot,[],!1,null,null,null);lt.options.__file="packages/radio/src/radio-button.vue";var ut=lt.exports;ut.install=function(e){e.component(ut.name,ut)};var ct=ut,dt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{id:e.id}},[i("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{tabindex:!!e.indeterminate&&0,role:!!e.indeterminate&&"checkbox","aria-checked":!!e.indeterminate&&"mixed"}},[i("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,r=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var s=e._i(i,null);n.checked?s<0&&(e.model=i.concat([null])):s>-1&&(e.model=i.slice(0,s).concat(i.slice(s+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":e.indeterminate?"true":"false",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=e.label,a=e._i(i,s);n.checked?a<0&&(e.model=i.concat([s])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};dt._withStripped=!0;var ht=r({name:"ElCheckbox",mixins:[C.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick((function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])}))}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},dt,[],!1,null,null,null);ht.options.__file="packages/checkbox/src/checkbox.vue";var pt=ht.exports;pt.install=function(e){e.component(pt.name,pt)};var ft=pt,mt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox-button",class:[e.size?"el-checkbox-button--"+e.size:"",{"is-disabled":e.isDisabled},{"is-checked":e.isChecked},{"is-focus":e.focus}],attrs:{role:"checkbox","aria-checked":e.isChecked,"aria-disabled":e.isDisabled}},[e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,r=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var s=e._i(i,null);n.checked?s<0&&(e.model=i.concat([null])):s>-1&&(e.model=i.slice(0,s).concat(i.slice(s+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=e.label,a=e._i(i,s);n.checked?a<0&&(e.model=i.concat([s])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox-button__inner",style:e.isChecked?e.activeStyle:null},[e._t("default",[e._v(e._s(e.label))])],2):e._e()])};mt._withStripped=!0;var vt=r({name:"ElCheckboxButton",mixins:[C.a],inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},props:{value:{},label:{},disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number]},computed:{model:{get:function(){return this._checkboxGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this._checkboxGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):void 0!==this.value?this.$emit("input",e):this.selfModel=e}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},_checkboxGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return e;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},activeStyle:function(){return{backgroundColor:this._checkboxGroup.fill||"",borderColor:this._checkboxGroup.fill||"",color:this._checkboxGroup.textColor||"","box-shadow":"-1px 0 0 0 "+this._checkboxGroup.fill}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._checkboxGroup.checkboxGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this._checkboxGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled}},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick((function(){t._checkboxGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])}))}}},created:function(){this.checked&&this.addToStore()}},mt,[],!1,null,null,null);vt.options.__file="packages/checkbox/src/checkbox-button.vue";var gt=vt.exports;gt.install=function(e){e.component(gt.name,gt)};var _t=gt,bt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-checkbox-group",attrs:{role:"group","aria-label":"checkbox-group"}},[this._t("default")],2)};bt._withStripped=!0;var yt=r({name:"ElCheckboxGroup",componentName:"ElCheckboxGroup",mixins:[C.a],inject:{elFormItem:{default:""}},props:{value:{},disabled:Boolean,min:Number,max:Number,size:String,fill:String,textColor:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[e])}}},bt,[],!1,null,null,null);yt.options.__file="packages/checkbox/src/checkbox-group.vue";var xt=yt.exports;xt.install=function(e){e.component(xt.name,xt)};var kt=xt,wt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-switch",class:{"is-disabled":e.switchDisabled,"is-checked":e.checked},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.switchDisabled},on:{click:function(t){return t.preventDefault(),e.switchValue(t)}}},[i("input",{ref:"input",staticClass:"el-switch__input",attrs:{type:"checkbox",id:e.id,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:e.switchDisabled},on:{change:e.handleChange,keydown:function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.switchValue(t)}}}),e.inactiveIconClass||e.inactiveText?i("span",{class:["el-switch__label","el-switch__label--left",e.checked?"":"is-active"]},[e.inactiveIconClass?i("i",{class:[e.inactiveIconClass]}):e._e(),!e.inactiveIconClass&&e.inactiveText?i("span",{attrs:{"aria-hidden":e.checked}},[e._v(e._s(e.inactiveText))]):e._e()]):e._e(),i("span",{ref:"core",staticClass:"el-switch__core",style:{width:e.coreWidth+"px"}}),e.activeIconClass||e.activeText?i("span",{class:["el-switch__label","el-switch__label--right",e.checked?"is-active":""]},[e.activeIconClass?i("i",{class:[e.activeIconClass]}):e._e(),!e.activeIconClass&&e.activeText?i("span",{attrs:{"aria-hidden":!e.checked}},[e._v(e._s(e.activeText))]):e._e()]):e._e()])};wt._withStripped=!0;var Ct=r({name:"ElSwitch",mixins:[R()("input"),k.a,C.a],inject:{elForm:{default:""}},props:{value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},activeIconClass:{type:String,default:""},inactiveIconClass:{type:String,default:""},activeText:String,inactiveText:String,activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String},data:function(){return{coreWidth:this.width}},created:function(){~[this.activeValue,this.inactiveValue].indexOf(this.value)||this.$emit("input",this.inactiveValue)},computed:{checked:function(){return this.value===this.activeValue},switchDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{checked:function(){this.$refs.input.checked=this.checked,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[this.value])}},methods:{handleChange:function(e){var t=this,i=this.checked?this.inactiveValue:this.activeValue;this.$emit("input",i),this.$emit("change",i),this.$nextTick((function(){t.$refs.input.checked=t.checked}))},setBackgroundColor:function(){var e=this.checked?this.activeColor:this.inactiveColor;this.$refs.core.style.borderColor=e,this.$refs.core.style.backgroundColor=e},switchValue:function(){!this.switchDisabled&&this.handleChange()},getMigratingConfig:function(){return{props:{"on-color":"on-color is renamed to active-color.","off-color":"off-color is renamed to inactive-color.","on-text":"on-text is renamed to active-text.","off-text":"off-text is renamed to inactive-text.","on-value":"on-value is renamed to active-value.","off-value":"off-value is renamed to inactive-value.","on-icon-class":"on-icon-class is renamed to active-icon-class.","off-icon-class":"off-icon-class is renamed to inactive-icon-class."}}}},mounted:function(){this.coreWidth=this.width||40,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.$refs.input.checked=this.checked}},wt,[],!1,null,null,null);Ct.options.__file="packages/switch/src/component.vue";var St=Ct.exports;St.install=function(e){e.component(St.name,St)};var Ot=St,Dt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,(function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])})),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.selectOption(t))},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return!("button"in t)&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:e.deletePrevTag(t)},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,tabindex:e.multiple&&e.filterable?"-1":null},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.debouncedOnInputChange},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.selectOption(t))},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)};Dt._withStripped=!0;var Et=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};Et._withStripped=!0;var Tt=r({name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[A.a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",(function(){e.$parent.visible&&e.updatePopper()})),this.$on("destroyPopper",this.destroyPopper)}},Et,[],!1,null,null,null);Tt.options.__file="packages/select/src/select-dropdown.vue";var $t=Tt.exports,Pt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};Pt._withStripped=!0;var jt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Mt=r({mixins:[C.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,r=i.valueKey;if(!this.created&&!n){if(r&&"object"===(void 0===e?"undefined":jt(e))&&"object"===(void 0===t?"undefined":jt(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some((function(e){return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)}))}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(m.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),r=i.indexOf(this);n>-1&&r<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},Pt,[],!1,null,null,null);Mt.options.__file="packages/select/src/option.vue";var It=Mt.exports,At=i(29),Nt=i.n(At),Lt=i(14),Ft=i(27),Vt=i.n(Ft),zt=r({mixins:[C.a,f.a,R()("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter((function(e){return e.visible})).every((function(e){return e.disabled}))}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach((function(e){e.hover=t.hoverOption===e}))}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick((function(){return t.scrollToOption(t.hoverOption)}))}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(m.isIE)()&&!Object(m.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter((function(e){return!e.created})).some((function(t){return t.currentLabel===e.query}));return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"},propPlaceholder:function(){return void 0!==this.placeholder?this.placeholder:this.t("el.select.placeholder")}},components:{ElInput:h.a,ElSelectMenu:$t,ElOption:It,ElTag:Nt.a,ElScrollbar:L.a},directives:{Clickoutside:j.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,required:!1},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick((function(){e.resetInputHeight()}))},propPlaceholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(m.valueEquals)(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick((function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)})),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick((function(){e.broadcast("ElSelectDropdown","updatePopper")})),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick((function(e){return t.handleQueryChange(i)}));else{var n=i[i.length-1]||"";this.isOnComposition=!Object(He.isKorean)(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick((function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")})),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick((function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()})),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var i=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");Vt()(i,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick((function(){return e.scrollToOption(e.selected)}))},emitChange:function(e){Object(m.valueEquals)(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),r="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),s=this.cachedOptions.length-1;s>=0;s--){var a=this.cachedOptions[s];if(i?Object(m.getValueByPath)(a.value,this.valueKey)===Object(m.getValueByPath)(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var o={value:e,currentLabel:i||n||r?"":String(e)};return this.multiple&&(o.hitState=!1),o},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach((function(t){i.push(e.getOption(t))})),this.selected=i,this.$nextTick((function(){e.resetInputHeight()}))},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.filterable&&(this.menuVisibleOnFocus=!0)),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout((function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)}),50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick((function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,(function(e){return"INPUT"===e.tagName}))[0],n=e.$refs.tags,r=n?Math.round(n.getBoundingClientRect().height):0,s=e.initialInputHeight||40;i.style.height=0===e.selected.length?s+"px":Math.max(n?r+(r>s?6:0):0,s)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}}))},resetHoverIndex:function(){var e=this;setTimeout((function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map((function(t){return e.options.indexOf(t)}))):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)}),300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),r=this.getValueIndex(n,e.value);r>-1?n.splice(r,1):(this.multipleLimit<=0||n.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],i="[object object]"===Object.prototype.toString.call(t).toLowerCase();if(i){var n=this.valueKey,r=-1;return e.some((function(e,i){return Object(m.getValueByPath)(e,n)===Object(m.getValueByPath)(t,n)&&(r=i,!0)})),r}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(m.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.propPlaceholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=$()(this.debounce,(function(){e.onInputChange()})),this.debouncedQueryChange=$()(this.debounce,(function(t){e.handleQueryChange(t.target.value)})),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object(Lt.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick((function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)})),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(Lt.removeResizeListener)(this.$el,this.handleResize)}},Dt,[],!1,null,null,null);zt.options.__file="packages/select/src/select.vue";var Rt=zt.exports;Rt.install=function(e){e.component(Rt.name,Rt)};var Bt=Rt;It.install=function(e){e.component(It.name,It)};var Ht=It,Wt=function(){var e=this.$createElement,t=this._self._c||e;return t("ul",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"el-select-group__wrap"},[t("li",{staticClass:"el-select-group__title"},[this._v(this._s(this.label))]),t("li",[t("ul",{staticClass:"el-select-group"},[this._t("default")],2)])])};Wt._withStripped=!0;var qt=r({mixins:[C.a],name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast("ElOption","handleGroupDisabled",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some((function(e){return!0===e.visible}))}},created:function(){this.$on("queryChange",this.queryChange)},mounted:function(){this.disabled&&this.broadcast("ElOption","handleGroupDisabled",this.disabled)}},Wt,[],!1,null,null,null);qt.options.__file="packages/select/src/option-group.vue";var Ut=qt.exports;Ut.install=function(e){e.component(Ut.name,Ut)};var Gt=Ut,Yt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])};Yt._withStripped=!0;var Kt=r({name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},Yt,[],!1,null,null,null);Kt.options.__file="packages/button/src/button.vue";var Xt=Kt.exports;Xt.install=function(e){e.component(Xt.name,Xt)};var Zt=Xt,Qt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-button-group"},[this._t("default")],2)};Qt._withStripped=!0;var Jt=r({name:"ElButtonGroup"},Qt,[],!1,null,null,null);Jt.options.__file="packages/button/src/button-group.vue";var ei=Jt.exports;ei.install=function(e){e.component(ei.name,ei)};var ti=ei,ii=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-table",class:[{"el-table--fit":e.fit,"el-table--striped":e.stripe,"el-table--border":e.border||e.isGroup,"el-table--hidden":e.isHidden,"el-table--group":e.isGroup,"el-table--fluid-height":e.maxHeight,"el-table--scrollable-x":e.layout.scrollX,"el-table--scrollable-y":e.layout.scrollY,"el-table--enable-row-hover":!e.store.states.isComplex,"el-table--enable-row-transition":0!==(e.store.states.data||[]).length&&(e.store.states.data||[]).length<100},e.tableSize?"el-table--"+e.tableSize:""],on:{mouseleave:function(t){e.handleMouseLeave(t)}}},[i("div",{ref:"hiddenColumns",staticClass:"hidden-columns"},[e._t("default")],2),e.showHeader?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"headerWrapper",staticClass:"el-table__header-wrapper"},[i("table-header",{ref:"tableHeader",style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"default-sort":e.defaultSort}})],1):e._e(),i("div",{ref:"bodyWrapper",staticClass:"el-table__body-wrapper",class:[e.layout.scrollX?"is-scrolling-"+e.scrollPosition:"is-scrolling-none"],style:[e.bodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{context:e.context,store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.data&&0!==e.data.length?e._e():i("div",{ref:"emptyBlock",staticClass:"el-table__empty-block",style:e.emptyBlockStyle},[i("span",{staticClass:"el-table__empty-text"},[e._t("empty",[e._v(e._s(e.emptyText||e.t("el.table.emptyText")))])],2)]),e.$slots.append?i("div",{ref:"appendWrapper",staticClass:"el-table__append-wrapper"},[e._t("append")],2):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"},{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"footerWrapper",staticClass:"el-table__footer-wrapper"},[i("table-footer",{style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,"default-sort":e.defaultSort}})],1):e._e(),e.fixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"fixedWrapper",staticClass:"el-table__fixed",style:[{width:e.layout.fixedWidth?e.layout.fixedWidth+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"fixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"fixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"fixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"left",store:e.store,stripe:e.stripe,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"row-style":e.rowStyle}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"fixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"rightFixedWrapper",staticClass:"el-table__fixed-right",style:[{width:e.layout.rightFixedWidth?e.layout.rightFixedWidth+"px":"",right:e.layout.scrollY?(e.border?e.layout.gutterWidth:e.layout.gutterWidth||0)+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"rightFixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"rightFixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"rightFixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"right",store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"rightFixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{ref:"rightFixedPatch",staticClass:"el-table__fixed-right-patch",style:{width:e.layout.scrollY?e.layout.gutterWidth+"px":"0",height:e.layout.headerHeight+"px"}}):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.resizeProxyVisible,expression:"resizeProxyVisible"}],ref:"resizeProxy",staticClass:"el-table__column-resize-proxy"})])};ii._withStripped=!0;var ni=i(17),ri=i.n(ni),si=i(35),ai=i(38),oi=i.n(ai),li="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>-1,ui={bind:function(e,t){var i,n;i=e,n=t.value,i&&i.addEventListener&&i.addEventListener(li?"DOMMouseScroll":"mousewheel",(function(e){var t=oi()(e);n&&n.apply(this,[e,t])}))}},ci=i(6),di=i.n(ci),hi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pi=function(e){for(var t=e.target;t&&"HTML"!==t.tagName.toUpperCase();){if("TD"===t.tagName.toUpperCase())return t;t=t.parentNode}return null},fi=function(e){return null!==e&&"object"===(void 0===e?"undefined":hi(e))},mi=function(e,t,i,n,r){if(!t&&!n&&(!r||Array.isArray(r)&&!r.length))return e;i="string"==typeof i?"descending"===i?-1:1:i&&i<0?-1:1;var s=n?null:function(i,n){return r?(Array.isArray(r)||(r=[r]),r.map((function(t){return"string"==typeof t?Object(m.getValueByPath)(i,t):t(i,n,e)}))):("$key"!==t&&fi(i)&&"$value"in i&&(i=i.$value),[fi(i)?Object(m.getValueByPath)(i,t):i])};return e.map((function(e,t){return{value:e,index:t,key:s?s(e,t):null}})).sort((function(e,t){var r=function(e,t){if(n)return n(e.value,t.value);for(var i=0,r=e.key.length;it.key[i])return 1}return 0}(e,t);return r||(r=e.index-t.index),r*i})).map((function(e){return e.value}))},vi=function(e,t){var i=null;return e.columns.forEach((function(e){e.id===t&&(i=e)})),i},gi=function(e,t){var i=(t.className||"").match(/el-table_[^\s]+/gm);return i?vi(e,i[0]):null},_i=function(e,t){if(!e)throw new Error("row is required when get row identity");if("string"==typeof t){if(t.indexOf(".")<0)return e[t];for(var i=t.split("."),n=e,r=0;r2&&void 0!==arguments[2]?arguments[2]:"children",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"hasChildren",r=function(e){return!(Array.isArray(e)&&e.length)};function s(e,a,o){t(e,a,o),a.forEach((function(e){if(e[n])t(e,null,o+1);else{var a=e[i];r(a)||s(e,a,o+1)}}))}e.forEach((function(e){if(e[n])t(e,null,0);else{var a=e[i];r(a)||s(e,a,0)}}))}(e,(function(e,t,i){var n=_i(e,r);Array.isArray(t)?a[n]={children:t.map((function(e){return _i(e,r)})),level:i}:s&&(a[n]={children:[],lazy:!0,level:i})}),i,n),a},updateTreeData:function(){var e=this.normalizedData,t=this.normalizedLazyNode,i=Object.keys(e),n={};if(i.length){var r=this.states,s=r.treeData,a=r.defaultExpandAll,o=r.expandRowKeys,l=r.lazy,u=[],c=function(e,t){var i=a||o&&-1!==o.indexOf(t);return!!(e&&e.expanded||i)};i.forEach((function(t){var i=s[t],r=Oi({},e[t]);if(r.expanded=c(i,t),r.lazy){var a=i||{},o=a.loaded,l=void 0!==o&&o,d=a.loading,h=void 0!==d&&d;r.loaded=!!l,r.loading=!!h,u.push(t)}n[t]=r}));var d=Object.keys(t);l&&d.length&&u.length&&d.forEach((function(e){var i=s[e],r=t[e].children;if(-1!==u.indexOf(e)){if(0!==n[e].children.length)throw new Error("[ElTable]children must be an empty array.");n[e].children=r}else{var a=i||{},o=a.loaded,l=void 0!==o&&o,d=a.loading,h=void 0!==d&&d;n[e]={lazy:!0,loaded:!!l,loading:!!h,expanded:c(i,e),children:r,level:""}}}))}this.states.treeData=n,this.updateTableScrollY()},updateTreeExpandKeys:function(e){this.states.expandRowKeys=e,this.updateTreeData()},toggleTreeExpansion:function(e,t){this.assertRowKey();var i=this.states,n=i.rowKey,r=i.treeData,s=_i(e,n),a=s&&r[s];if(s&&a&&"expanded"in a){var o=a.expanded;t=void 0===t?!a.expanded:t,r[s].expanded=t,o!==t&&this.table.$emit("expand-change",e,t),this.updateTableScrollY()}},loadOrToggle:function(e){this.assertRowKey();var t=this.states,i=t.lazy,n=t.treeData,r=t.rowKey,s=_i(e,r),a=n[s];i&&a&&"loaded"in a&&!a.loaded?this.loadData(e,s,a):this.toggleTreeExpansion(e)},loadData:function(e,t,i){var n=this,r=this.table.load,s=this.states.treeData;r&&!s[t].loaded&&(s[t].loading=!0,r(e,i,(function(i){if(!Array.isArray(i))throw new Error("[ElTable] data must be an array");var r=n.states,s=r.lazyTreeNodeMap,a=r.treeData;a[t].loading=!1,a[t].loaded=!0,a[t].expanded=!0,i.length&&n.$set(s,t,i),n.table.$emit("expand-change",e,!0)})))}}},Ei=function e(t){var i=[];return t.forEach((function(t){t.children?i.push.apply(i,e(t.children)):i.push(t)})),i},Ti=di.a.extend({data:function(){return{states:{rowKey:null,data:[],isComplex:!1,_columns:[],originColumns:[],columns:[],fixedColumns:[],rightFixedColumns:[],leafColumns:[],fixedLeafColumns:[],rightFixedLeafColumns:[],leafColumnsLength:0,fixedLeafColumnsLength:0,rightFixedLeafColumnsLength:0,isAllSelected:!1,selection:[],reserveSelection:!1,selectOnIndeterminate:!1,selectable:null,filters:{},filteredData:null,sortingColumn:null,sortProp:null,sortOrder:null,hoverRow:null}}},mixins:[Ci,Si,Di],methods:{assertRowKey:function(){if(!this.states.rowKey)throw new Error("[ElTable] prop row-key is required")},updateColumns:function(){var e=this.states,t=e._columns||[];e.fixedColumns=t.filter((function(e){return!0===e.fixed||"left"===e.fixed})),e.rightFixedColumns=t.filter((function(e){return"right"===e.fixed})),e.fixedColumns.length>0&&t[0]&&"selection"===t[0].type&&!t[0].fixed&&(t[0].fixed=!0,e.fixedColumns.unshift(t[0]));var i=t.filter((function(e){return!e.fixed}));e.originColumns=[].concat(e.fixedColumns).concat(i).concat(e.rightFixedColumns);var n=Ei(i),r=Ei(e.fixedColumns),s=Ei(e.rightFixedColumns);e.leafColumnsLength=n.length,e.fixedLeafColumnsLength=r.length,e.rightFixedLeafColumnsLength=s.length,e.columns=[].concat(r).concat(n).concat(s),e.isComplex=e.fixedColumns.length>0||e.rightFixedColumns.length>0},scheduleLayout:function(e){e&&this.updateColumns(),this.table.debouncedUpdateLayout()},isSelected:function(e){var t=this.states.selection;return(void 0===t?[]:t).indexOf(e)>-1},clearSelection:function(){var e=this.states;e.isAllSelected=!1,e.selection.length&&(e.selection=[],this.table.$emit("selection-change",[]))},cleanSelection:function(){var e=this.states,t=e.data,i=e.rowKey,n=e.selection,r=void 0;if(i){r=[];var s=bi(n,i),a=bi(t,i);for(var o in s)s.hasOwnProperty(o)&&!a[o]&&r.push(s[o].row)}else r=n.filter((function(e){return-1===t.indexOf(e)}));if(r.length){var l=n.filter((function(e){return-1===r.indexOf(e)}));e.selection=l,this.table.$emit("selection-change",l.slice())}},toggleRowSelection:function(e,t){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=wi(this.states.selection,e,t);if(n){var r=(this.states.selection||[]).slice();i&&this.table.$emit("select",r,e),this.table.$emit("selection-change",r)}},_toggleAllSelection:function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.selection,r=e.selectOnIndeterminate?!e.isAllSelected:!(e.isAllSelected||n.length);e.isAllSelected=r;var s=!1;i.forEach((function(t,i){e.selectable?e.selectable.call(null,t,i)&&wi(n,t,r)&&(s=!0):wi(n,t,r)&&(s=!0)})),s&&this.table.$emit("selection-change",n?n.slice():[]),this.table.$emit("select-all",n)},updateSelectionByRowKey:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.data,r=bi(t,i);n.forEach((function(e){var n=_i(e,i),s=r[n];s&&(t[s.index]=e)}))},updateAllSelected:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.selectable,r=e.data||[];if(0!==r.length){var s=void 0;i&&(s=bi(t,i));for(var a,o=!0,l=0,u=0,c=r.length;u1?i-1:0),r=1;rthis.bodyHeight;return this.scrollY=n,i!==n}return!1},e.prototype.setHeight=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"height";if(!di.a.prototype.$isServer){var n=this.table.$el;if(e=ki(e),this.height=e,!n&&(e||0===e))return di.a.nextTick((function(){return t.setHeight(e,i)}));"number"==typeof e?(n.style[i]=e+"px",this.updateElsHeight()):"string"==typeof e&&(n.style[i]=e,this.updateElsHeight())}},e.prototype.setMaxHeight=function(e){this.setHeight(e,"max-height")},e.prototype.getFlattenColumns=function(){var e=[];return this.table.columns.forEach((function(t){t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)})),e},e.prototype.updateElsHeight=function(){var e=this;if(!this.table.$ready)return di.a.nextTick((function(){return e.updateElsHeight()}));var t=this.table.$refs,i=t.headerWrapper,n=t.appendWrapper,r=t.footerWrapper;if(this.appendHeight=n?n.offsetHeight:0,!this.showHeader||i){var s=i?i.querySelector(".el-table__header tr"):null,a=this.headerDisplayNone(s),o=this.headerHeight=this.showHeader?i.offsetHeight:0;if(this.showHeader&&!a&&i.offsetWidth>0&&(this.table.columns||[]).length>0&&o<2)return di.a.nextTick((function(){return e.updateElsHeight()}));var l=this.tableHeight=this.table.$el.clientHeight,u=this.footerHeight=r?r.offsetHeight:0;null!==this.height&&(this.bodyHeight=l-o-u+(r?1:0)),this.fixedBodyHeight=this.scrollX?this.bodyHeight-this.gutterWidth:this.bodyHeight;var c=!(this.store.states.data&&this.store.states.data.length);this.viewportHeight=this.scrollX?l-(c?0:this.gutterWidth):l,this.updateScrollY(),this.notifyObservers("scrollable")}},e.prototype.headerDisplayNone=function(e){if(!e)return!0;for(var t=e;"DIV"!==t.tagName;){if("none"===getComputedStyle(t).display)return!0;t=t.parentElement}return!1},e.prototype.updateColumnsWidth=function(){if(!di.a.prototype.$isServer){var e=this.fit,t=this.table.$el.clientWidth,i=0,n=this.getFlattenColumns(),r=n.filter((function(e){return"number"!=typeof e.width}));if(n.forEach((function(e){"number"==typeof e.width&&e.realWidth&&(e.realWidth=null)})),r.length>0&&e){n.forEach((function(e){i+=e.width||e.minWidth||80}));var s=this.scrollY?this.gutterWidth:0;if(i<=t-s){this.scrollX=!1;var a=t-s-i;if(1===r.length)r[0].realWidth=(r[0].minWidth||80)+a;else{var o=a/r.reduce((function(e,t){return e+(t.minWidth||80)}),0),l=0;r.forEach((function(e,t){if(0!==t){var i=Math.floor((e.minWidth||80)*o);l+=i,e.realWidth=(e.minWidth||80)+i}})),r[0].realWidth=(r[0].minWidth||80)+a-l}}else this.scrollX=!0,r.forEach((function(e){e.realWidth=e.minWidth}));this.bodyWidth=Math.max(i,t),this.table.resizeState.width=this.bodyWidth}else n.forEach((function(e){e.width||e.minWidth?e.realWidth=e.width||e.minWidth:e.realWidth=80,i+=e.realWidth})),this.scrollX=i>t,this.bodyWidth=i;var u=this.store.states.fixedColumns;if(u.length>0){var c=0;u.forEach((function(e){c+=e.realWidth||e.width})),this.fixedWidth=c}var d=this.store.states.rightFixedColumns;if(d.length>0){var h=0;d.forEach((function(e){h+=e.realWidth||e.width})),this.rightFixedWidth=h}this.notifyObservers("columns")}},e.prototype.addObserver=function(e){this.observers.push(e)},e.prototype.removeObserver=function(e){var t=this.observers.indexOf(e);-1!==t&&this.observers.splice(t,1)},e.prototype.notifyObservers=function(e){var t=this;this.observers.forEach((function(i){switch(e){case"columns":i.onColumnsChange(t);break;case"scrollable":i.onScrollableChange(t);break;default:throw new Error("Table Layout don't have event "+e+".")}}))},e}(),Ai={created:function(){this.tableLayout.addObserver(this)},destroyed:function(){this.tableLayout.removeObserver(this)},computed:{tableLayout:function(){var e=this.layout;if(!e&&this.table&&(e=this.table.layout),!e)throw new Error("Can not find table layout.");return e}},mounted:function(){this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout)},updated:function(){this.__updated__||(this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout),this.__updated__=!0)},methods:{onColumnsChange:function(e){var t=this.$el.querySelectorAll("colgroup > col");if(t.length){var i=e.getFlattenColumns(),n={};i.forEach((function(e){n[e.id]=e}));for(var r=0,s=t.length;r col[name=gutter]"),i=0,n=t.length;i=this.leftFixedLeafCount:"right"===this.fixed?e=this.columnsCount-this.rightFixedLeafCount},getSpan:function(e,t,i,n){var r=1,s=1,a=this.table.spanMethod;if("function"==typeof a){var o=a({row:e,column:t,rowIndex:i,columnIndex:n});Array.isArray(o)?(r=o[0],s=o[1]):"object"===(void 0===o?"undefined":Ni(o))&&(r=o.rowspan,s=o.colspan)}return{rowspan:r,colspan:s}},getRowStyle:function(e,t){var i=this.table.rowStyle;return"function"==typeof i?i.call(null,{row:e,rowIndex:t}):i||null},getRowClass:function(e,t){var i=["el-table__row"];this.table.highlightCurrentRow&&e===this.store.states.currentRow&&i.push("current-row"),this.stripe&&t%2==1&&i.push("el-table__row--striped");var n=this.table.rowClassName;return"string"==typeof n?i.push(n):"function"==typeof n&&i.push(n.call(null,{row:e,rowIndex:t})),this.store.states.expandRows.indexOf(e)>-1&&i.push("expanded"),i},getCellStyle:function(e,t,i,n){var r=this.table.cellStyle;return"function"==typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):r},getCellClass:function(e,t,i,n){var r=[n.id,n.align,n.className];this.isColumnHidden(t)&&r.push("is-hidden");var s=this.table.cellClassName;return"string"==typeof s?r.push(s):"function"==typeof s&&r.push(s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),r.push("el-table__cell"),r.join(" ")},getColspanRealWidth:function(e,t,i){return t<1?e[i].realWidth:e.map((function(e){return e.realWidth})).slice(i,i+t).reduce((function(e,t){return e+t}),-1)},handleCellMouseEnter:function(e,t){var i=this.table,n=pi(e);if(n){var r=gi(i,n),s=i.hoverState={cell:n,column:r,row:t};i.$emit("cell-mouse-enter",s.row,s.column,s.cell,e)}var a=e.target.querySelector(".cell");if(Object(fe.hasClass)(a,"el-tooltip")&&a.childNodes.length){var o=document.createRange();if(o.setStart(a,0),o.setEnd(a,a.childNodes.length),(o.getBoundingClientRect().width+((parseInt(Object(fe.getStyle)(a,"paddingLeft"),10)||0)+(parseInt(Object(fe.getStyle)(a,"paddingRight"),10)||0))>a.offsetWidth||a.scrollWidth>a.offsetWidth)&&this.$refs.tooltip){var l=this.$refs.tooltip;this.tooltipContent=n.innerText||n.textContent,l.referenceElm=n,l.$refs.popper&&(l.$refs.popper.style.display="none"),l.doDestroy(),l.setExpectedState(!0),this.activateTooltip(l)}}},handleCellMouseLeave:function(e){var t=this.$refs.tooltip;if(t&&(t.setExpectedState(!1),t.handleClosePopper()),pi(e)){var i=this.table.hoverState||{};this.table.$emit("cell-mouse-leave",i.row,i.column,i.cell,e)}},handleMouseEnter:$()(30,(function(e){this.store.commit("setHoverRow",e)})),handleMouseLeave:$()(30,(function(){this.store.commit("setHoverRow",null)})),handleContextMenu:function(e,t){this.handleEvent(e,t,"contextmenu")},handleDoubleClick:function(e,t){this.handleEvent(e,t,"dblclick")},handleClick:function(e,t){this.store.commit("setCurrentRow",t),this.handleEvent(e,t,"click")},handleEvent:function(e,t,i){var n=this.table,r=pi(e),s=void 0;r&&(s=gi(n,r))&&n.$emit("cell-"+i,t,s,r,e),n.$emit("row-"+i,t,s,e)},rowRender:function(e,t,i){var n=this,r=this.$createElement,s=this.treeIndent,a=this.columns,o=this.firstDefaultColumnIndex,l=a.map((function(e,t){return n.isColumnHidden(t)})),u=this.getRowClass(e,t),c=!0;return i&&(u.push("el-table__row--level-"+i.level),c=i.display),r("tr",{style:[c?null:{display:"none"},this.getRowStyle(e,t)],class:u,key:this.getKeyOfRow(e,t),on:{dblclick:function(t){return n.handleDoubleClick(t,e)},click:function(t){return n.handleClick(t,e)},contextmenu:function(t){return n.handleContextMenu(t,e)},mouseenter:function(e){return n.handleMouseEnter(t)},mouseleave:this.handleMouseLeave}},[a.map((function(u,c){var d=n.getSpan(e,u,t,c),h=d.rowspan,p=d.colspan;if(!h||!p)return null;var f=Li({},u);f.realWidth=n.getColspanRealWidth(a,p,c);var m={store:n.store,_self:n.context||n.table.$vnode.context,column:f,row:e,$index:t};return c===o&&i&&(m.treeNode={indent:i.level*s,level:i.level},"boolean"==typeof i.expanded&&(m.treeNode.expanded=i.expanded,"loading"in i&&(m.treeNode.loading=i.loading),"noLazyChildren"in i&&(m.treeNode.noLazyChildren=i.noLazyChildren))),r("td",{style:n.getCellStyle(t,c,e,u),class:n.getCellClass(t,c,e,u),attrs:{rowspan:h,colspan:p},on:{mouseenter:function(t){return n.handleCellMouseEnter(t,e)},mouseleave:n.handleCellMouseLeave}},[u.renderCell.call(n._renderProxy,n.$createElement,m,l[c])])}))])},wrappedRowRender:function(e,t){var i=this,n=this.$createElement,r=this.store,s=r.isRowExpanded,a=r.assertRowKey,o=r.states,l=o.treeData,u=o.lazyTreeNodeMap,c=o.childrenColumnName,d=o.rowKey;if(this.hasExpandColumn&&s(e)){var h=this.table.renderExpanded,p=this.rowRender(e,t);return h?[[p,n("tr",{key:"expanded-row__"+p.key},[n("td",{attrs:{colspan:this.columnsCount},class:"el-table__cell el-table__expanded-cell"},[h(this.$createElement,{row:e,$index:t,store:this.store})])])]]:(console.error("[Element Error]renderExpanded is required."),p)}if(Object.keys(l).length){a();var f=_i(e,d),m=l[f],v=null;m&&(v={expanded:m.expanded,level:m.level,display:!0},"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(v.noLazyChildren=!(m.children&&m.children.length)),v.loading=m.loading));var g=[this.rowRender(e,t,v)];if(m){var _=0;m.display=!0,function e(n,r){n&&n.length&&r&&n.forEach((function(n){var s={display:r.display&&r.expanded,level:r.level+1},a=_i(n,d);if(null==a)throw new Error("for nested data item, row-key is required.");if((m=Li({},l[a]))&&(s.expanded=m.expanded,m.level=m.level||s.level,m.display=!(!m.expanded||!s.display),"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(s.noLazyChildren=!(m.children&&m.children.length)),s.loading=m.loading)),_++,g.push(i.rowRender(n,t+_,s)),m){var o=u[a]||n[c];e(o,m)}}))}(u[f]||e[c],m)}return g}return this.rowRender(e,t)}}},Vi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"}},[e.multiple?i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("div",{staticClass:"el-table-filter__content"},[i("el-scrollbar",{attrs:{"wrap-class":"el-table-filter__wrap"}},[i("el-checkbox-group",{staticClass:"el-table-filter__checkbox-group",model:{value:e.filteredValue,callback:function(t){e.filteredValue=t},expression:"filteredValue"}},e._l(e.filters,(function(t){return i("el-checkbox",{key:t.value,attrs:{label:t.value}},[e._v(e._s(t.text))])})),1)],1)],1),i("div",{staticClass:"el-table-filter__bottom"},[i("button",{class:{"is-disabled":0===e.filteredValue.length},attrs:{disabled:0===e.filteredValue.length},on:{click:e.handleConfirm}},[e._v(e._s(e.t("el.table.confirmFilter")))]),i("button",{on:{click:e.handleReset}},[e._v(e._s(e.t("el.table.resetFilter")))])])]):i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("ul",{staticClass:"el-table-filter__list"},[i("li",{staticClass:"el-table-filter__list-item",class:{"is-active":void 0===e.filterValue||null===e.filterValue},on:{click:function(t){e.handleSelect(null)}}},[e._v(e._s(e.t("el.table.clearFilter")))]),e._l(e.filters,(function(t){return i("li",{key:t.value,staticClass:"el-table-filter__list-item",class:{"is-active":e.isActive(t)},attrs:{label:t.value},on:{click:function(i){e.handleSelect(t.value)}}},[e._v(e._s(t.text))])}))],2)])])};Vi._withStripped=!0;var zi=[];!di.a.prototype.$isServer&&document.addEventListener("click",(function(e){zi.forEach((function(t){var i=e.target;t&&t.$el&&(i===t.$el||t.$el.contains(i)||t.handleOutsideClick&&t.handleOutsideClick(e))}))}));var Ri=function(e){e&&zi.push(e)},Bi=function(e){-1!==zi.indexOf(e)&&zi.splice(e,1)},Hi=i(31),Wi=i.n(Hi),qi=r({name:"ElTableFilterPanel",mixins:[A.a,f.a],directives:{Clickoutside:j.a},components:{ElCheckbox:ri.a,ElCheckboxGroup:Wi.a,ElScrollbar:L.a},props:{placement:{type:String,default:"bottom-end"}},methods:{isActive:function(e){return e.value===this.filterValue},handleOutsideClick:function(){var e=this;setTimeout((function(){e.showPopper=!1}),16)},handleConfirm:function(){this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleReset:function(){this.filteredValue=[],this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleSelect:function(e){this.filterValue=e,null!=e?this.confirmFilter(this.filteredValue):this.confirmFilter([]),this.handleOutsideClick()},confirmFilter:function(e){this.table.store.commit("filterChange",{column:this.column,values:e}),this.table.store.updateAllSelected()}},data:function(){return{table:null,cell:null,column:null}},computed:{filters:function(){return this.column&&this.column.filters},filterValue:{get:function(){return(this.column.filteredValue||[])[0]},set:function(e){this.filteredValue&&(null!=e?this.filteredValue.splice(0,1,e):this.filteredValue.splice(0,1))}},filteredValue:{get:function(){return this.column&&this.column.filteredValue||[]},set:function(e){this.column&&(this.column.filteredValue=e)}},multiple:function(){return!this.column||this.column.filterMultiple}},mounted:function(){var e=this;this.popperElm=this.$el,this.referenceElm=this.cell,this.table.bodyWrapper.addEventListener("scroll",(function(){e.updatePopper()})),this.$watch("showPopper",(function(t){e.column&&(e.column.filterOpened=t),t?Ri(e):Bi(e)}))},watch:{showPopper:function(e){!0===e&&parseInt(this.popperJS._popper.style.zIndex,10)1;return r&&(this.$parent.isGroup=!0),e("table",{class:"el-table__header",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map((function(t){return e("col",{attrs:{name:t.id},key:t.id})})),this.hasGutter?e("col",{attrs:{name:"gutter"}}):""]),e("thead",{class:[{"is-group":r,"has-gutter":this.hasGutter}]},[this._l(n,(function(i,n){return e("tr",{style:t.getHeaderRowStyle(n),class:t.getHeaderRowClass(n)},[i.map((function(r,s){return e("th",{attrs:{colspan:r.colSpan,rowspan:r.rowSpan},on:{mousemove:function(e){return t.handleMouseMove(e,r)},mouseout:t.handleMouseOut,mousedown:function(e){return t.handleMouseDown(e,r)},click:function(e){return t.handleHeaderClick(e,r)},contextmenu:function(e){return t.handleHeaderContextMenu(e,r)}},style:t.getHeaderCellStyle(n,s,i,r),class:t.getHeaderCellClass(n,s,i,r),key:r.id},[e("div",{class:["cell",r.filteredValue&&r.filteredValue.length>0?"highlight":"",r.labelClassName]},[r.renderHeader?r.renderHeader.call(t._renderProxy,e,{column:r,$index:s,store:t.store,_self:t.$parent.$vnode.context}):r.label,r.sortable?e("span",{class:"caret-wrapper",on:{click:function(e){return t.handleSortClick(e,r)}}},[e("i",{class:"sort-caret ascending",on:{click:function(e){return t.handleSortClick(e,r,"ascending")}}}),e("i",{class:"sort-caret descending",on:{click:function(e){return t.handleSortClick(e,r,"descending")}}})]):"",r.filterable?e("span",{class:"el-table__column-filter-trigger",on:{click:function(e){return t.handleFilterClick(e,r)}}},[e("i",{class:["el-icon-arrow-down",r.filterOpened?"el-icon-arrow-up":""]})]):""])])})),t.hasGutter?e("th",{class:"el-table__cell gutter"}):""])}))])])},props:{fixed:String,store:{required:!0},border:Boolean,defaultSort:{type:Object,default:function(){return{prop:"",order:""}}}},components:{ElCheckbox:ri.a},computed:Gi({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},Pi({columns:"columns",isAllSelected:"isAllSelected",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),created:function(){this.filterPanels={}},mounted:function(){var e=this;this.$nextTick((function(){var t=e.defaultSort,i=t.prop,n=t.order;e.store.commit("sort",{prop:i,order:n,init:!0})}))},beforeDestroy:function(){var e=this.filterPanels;for(var t in e)e.hasOwnProperty(t)&&e[t]&&e[t].$destroy(!0)},methods:{isCellHidden:function(e,t){for(var i=0,n=0;n=this.leftFixedLeafCount:"right"===this.fixed?i=this.columnsCount-this.rightFixedLeafCount},getHeaderRowStyle:function(e){var t=this.table.headerRowStyle;return"function"==typeof t?t.call(null,{rowIndex:e}):t},getHeaderRowClass:function(e){var t=[],i=this.table.headerRowClassName;return"string"==typeof i?t.push(i):"function"==typeof i&&t.push(i.call(null,{rowIndex:e})),t.join(" ")},getHeaderCellStyle:function(e,t,i,n){var r=this.table.headerCellStyle;return"function"==typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):r},getHeaderCellClass:function(e,t,i,n){var r=[n.id,n.order,n.headerAlign,n.className,n.labelClassName];0===e&&this.isCellHidden(t,i)&&r.push("is-hidden"),n.children||r.push("is-leaf"),n.sortable&&r.push("is-sortable");var s=this.table.headerCellClassName;return"string"==typeof s?r.push(s):"function"==typeof s&&r.push(s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),r.push("el-table__cell"),r.join(" ")},toggleAllSelection:function(e){e.stopPropagation(),this.store.commit("toggleAllSelection")},handleFilterClick:function(e,t){e.stopPropagation();var i=e.target,n="TH"===i.tagName?i:i.parentNode;if(!Object(fe.hasClass)(n,"noclick")){n=n.querySelector(".el-table__column-filter-trigger")||n;var r=this.$parent,s=this.filterPanels[t.id];s&&t.filterOpened?s.showPopper=!1:(s||(s=new di.a(Ui),this.filterPanels[t.id]=s,t.filterPlacement&&(s.placement=t.filterPlacement),s.table=r,s.cell=n,s.column=t,!this.$isServer&&s.$mount(document.createElement("div"))),setTimeout((function(){s.showPopper=!0}),16))}},handleHeaderClick:function(e,t){!t.filters&&t.sortable?this.handleSortClick(e,t):t.filterable&&!t.sortable&&this.handleFilterClick(e,t),this.$parent.$emit("header-click",t,e)},handleHeaderContextMenu:function(e,t){this.$parent.$emit("header-contextmenu",t,e)},handleMouseDown:function(e,t){var i=this;if(!this.$isServer&&!(t.children&&t.children.length>0)&&this.draggingColumn&&this.border){this.dragging=!0,this.$parent.resizeProxyVisible=!0;var n=this.$parent,r=n.$el.getBoundingClientRect().left,s=this.$el.querySelector("th."+t.id),a=s.getBoundingClientRect(),o=a.left-r+30;Object(fe.addClass)(s,"noclick"),this.dragState={startMouseLeft:e.clientX,startLeft:a.right-r,startColumnLeft:a.left-r,tableLeft:r};var l=n.$refs.resizeProxy;l.style.left=this.dragState.startLeft+"px",document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};var u=function(e){var t=e.clientX-i.dragState.startMouseLeft,n=i.dragState.startLeft+t;l.style.left=Math.max(o,n)+"px"};document.addEventListener("mousemove",u),document.addEventListener("mouseup",(function r(){if(i.dragging){var a=i.dragState,o=a.startColumnLeft,c=a.startLeft,d=parseInt(l.style.left,10)-o;t.width=t.realWidth=d,n.$emit("header-dragend",t.width,c-o,t,e),i.store.scheduleLayout(),document.body.style.cursor="",i.dragging=!1,i.draggingColumn=null,i.dragState={},n.resizeProxyVisible=!1}document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",r),document.onselectstart=null,document.ondragstart=null,setTimeout((function(){Object(fe.removeClass)(s,"noclick")}),0)}))}},handleMouseMove:function(e,t){if(!(t.children&&t.children.length>0)){for(var i=e.target;i&&"TH"!==i.tagName;)i=i.parentNode;if(t&&t.resizable&&!this.dragging&&this.border){var n=i.getBoundingClientRect(),r=document.body.style;n.width>12&&n.right-e.pageX<8?(r.cursor="col-resize",Object(fe.hasClass)(i,"is-sortable")&&(i.style.cursor="col-resize"),this.draggingColumn=t):this.dragging||(r.cursor="",Object(fe.hasClass)(i,"is-sortable")&&(i.style.cursor="pointer"),this.draggingColumn=null)}}},handleMouseOut:function(){this.$isServer||(document.body.style.cursor="")},toggleOrder:function(e){var t=e.order,i=e.sortOrders;if(""===t)return i[0];var n=i.indexOf(t||null);return i[n>i.length-2?0:n+1]},handleSortClick:function(e,t,i){e.stopPropagation();for(var n=t.order===i?null:i||this.toggleOrder(t),r=e.target;r&&"TH"!==r.tagName;)r=r.parentNode;if(r&&"TH"===r.tagName&&Object(fe.hasClass)(r,"noclick"))Object(fe.removeClass)(r,"noclick");else if(t.sortable){var s=this.store.states,a=s.sortProp,o=void 0,l=s.sortingColumn;(l!==t||l===t&&null===l.order)&&(l&&(l.order=null),s.sortingColumn=t,a=t.property),o=t.order=n||null,s.sortProp=a,s.sortOrder=o,this.store.commit("changeSortCondition")}}},data:function(){return{draggingColumn:null,dragging:!1,dragState:{}}}},Xi=Object.assign||function(e){for(var t=1;t=this.leftFixedLeafCount;if("right"===this.fixed){for(var n=0,r=0;r=this.columnsCount-this.rightFixedCount)},getRowClasses:function(e,t){var i=[e.id,e.align,e.labelClassName];return e.className&&i.push(e.className),this.isCellHidden(t,this.columns,e)&&i.push("is-hidden"),e.children||i.push("is-leaf"),i}}},Qi=Object.assign||function(e){for(var t=1;t0){var n=i.scrollTop;t.pixelY<0&&0!==n&&e.preventDefault(),t.pixelY>0&&i.scrollHeight-i.clientHeight>n&&e.preventDefault(),i.scrollTop+=Math.ceil(t.pixelY/5)}else i.scrollLeft+=Math.ceil(t.pixelX/5)},handleHeaderFooterMousewheel:function(e,t){var i=t.pixelX,n=t.pixelY;Math.abs(i)>=Math.abs(n)&&(this.bodyWrapper.scrollLeft+=t.pixelX/5)},syncPostion:Object(si.throttle)(20,(function(){var e=this.bodyWrapper,t=e.scrollLeft,i=e.scrollTop,n=e.offsetWidth,r=e.scrollWidth,s=this.$refs,a=s.headerWrapper,o=s.footerWrapper,l=s.fixedBodyWrapper,u=s.rightFixedBodyWrapper;a&&(a.scrollLeft=t),o&&(o.scrollLeft=t),l&&(l.scrollTop=i),u&&(u.scrollTop=i);var c=r-n-1;this.scrollPosition=t>=c?"right":0===t?"left":"middle"})),bindEvents:function(){this.bodyWrapper.addEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(Lt.addResizeListener)(this.$el,this.resizeListener)},unbindEvents:function(){this.bodyWrapper.removeEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(Lt.removeResizeListener)(this.$el,this.resizeListener)},resizeListener:function(){if(this.$ready){var e=!1,t=this.$el,i=this.resizeState,n=i.width,r=i.height,s=t.offsetWidth;n!==s&&(e=!0);var a=t.offsetHeight;(this.height||this.shouldUpdateHeight)&&r!==a&&(e=!0),e&&(this.resizeState.width=s,this.resizeState.height=a,this.doLayout())}},doLayout:function(){this.shouldUpdateHeight&&this.layout.updateElsHeight(),this.layout.updateColumnsWidth()},sort:function(e,t){this.store.commit("sort",{prop:e,order:t})},toggleAllSelection:function(){this.store.commit("toggleAllSelection")}},computed:Qi({tableSize:function(){return this.size||(this.$ELEMENT||{}).size},bodyWrapper:function(){return this.$refs.bodyWrapper},shouldUpdateHeight:function(){return this.height||this.maxHeight||this.fixedColumns.length>0||this.rightFixedColumns.length>0},bodyWidth:function(){var e=this.layout,t=e.bodyWidth,i=e.scrollY,n=e.gutterWidth;return t?t-(i?n:0)+"px":""},bodyHeight:function(){var e=this.layout,t=e.headerHeight,i=void 0===t?0:t,n=e.bodyHeight,r=e.footerHeight,s=void 0===r?0:r;if(this.height)return{height:n?n+"px":""};if(this.maxHeight){var a=ki(this.maxHeight);if("number"==typeof a)return{"max-height":a-s-(this.showHeader?i:0)+"px"}}return{}},fixedBodyHeight:function(){if(this.height)return{height:this.layout.fixedBodyHeight?this.layout.fixedBodyHeight+"px":""};if(this.maxHeight){var e=ki(this.maxHeight);if("number"==typeof e)return e=this.layout.scrollX?e-this.layout.gutterWidth:e,this.showHeader&&(e-=this.layout.headerHeight),{"max-height":(e-=this.layout.footerHeight)+"px"}}return{}},fixedHeight:function(){return this.maxHeight?this.showSummary?{bottom:0}:{bottom:this.layout.scrollX&&this.data.length?this.layout.gutterWidth+"px":""}:this.showSummary?{height:this.layout.tableHeight?this.layout.tableHeight+"px":""}:{height:this.layout.viewportHeight?this.layout.viewportHeight+"px":""}},emptyBlockStyle:function(){if(this.data&&this.data.length)return null;var e="100%";return this.layout.appendHeight&&(e="calc(100% - "+this.layout.appendHeight+"px)"),{width:this.bodyWidth,height:e}}},Pi({selection:"selection",columns:"columns",tableData:"data",fixedColumns:"fixedColumns",rightFixedColumns:"rightFixedColumns"})),watch:{height:{immediate:!0,handler:function(e){this.layout.setHeight(e)}},maxHeight:{immediate:!0,handler:function(e){this.layout.setMaxHeight(e)}},currentRowKey:{immediate:!0,handler:function(e){this.rowKey&&this.store.setCurrentRowKey(e)}},data:{immediate:!0,handler:function(e){this.store.commit("setData",e)}},expandRowKeys:{immediate:!0,handler:function(e){e&&this.store.setExpandRowKeysAdapter(e)}}},created:function(){var e=this;this.tableId="el-table_"+Ji++,this.debouncedUpdateLayout=Object(si.debounce)(50,(function(){return e.doLayout()}))},mounted:function(){var e=this;this.bindEvents(),this.store.updateColumns(),this.doLayout(),this.resizeState={width:this.$el.offsetWidth,height:this.$el.offsetHeight},this.store.states.columns.forEach((function(t){t.filteredValue&&t.filteredValue.length&&e.store.commit("filterChange",{column:t,values:t.filteredValue,silent:!0})})),this.$ready=!0},destroyed:function(){this.unbindEvents()},data:function(){var e=this.treeProps,t=e.hasChildren,i=void 0===t?"hasChildren":t,n=e.children,r=void 0===n?"children":n;return this.store=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Table is required.");var i=new $i;return i.table=e,i.toggleAllSelection=$()(10,i._toggleAllSelection),Object.keys(t).forEach((function(e){i.states[e]=t[e]})),i}(this,{rowKey:this.rowKey,defaultExpandAll:this.defaultExpandAll,selectOnIndeterminate:this.selectOnIndeterminate,indent:this.indent,lazy:this.lazy,lazyColumnIdentifier:i,childrenColumnName:r}),{layout:new Ii({store:this.store,table:this,fit:this.fit,showHeader:this.showHeader}),isHidden:!1,renderExpanded:null,resizeProxyVisible:!1,resizeState:{width:null,height:null},isGroup:!1,scrollPosition:"left"}}},ii,[],!1,null,null,null);en.options.__file="packages/table/src/table.vue";var tn=en.exports;tn.install=function(e){e.component(tn.name,tn)};var nn=tn,rn={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:"",className:"el-table-column--selection"},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},sn={selection:{renderHeader:function(e,t){var i=t.store;return e("el-checkbox",{attrs:{disabled:i.states.data&&0===i.states.data.length,indeterminate:i.states.selection.length>0&&!this.isAllSelected,value:this.isAllSelected},nativeOn:{click:this.toggleAllSelection}})},renderCell:function(e,t){var i=t.row,n=t.column,r=t.store,s=t.$index;return e("el-checkbox",{nativeOn:{click:function(e){return e.stopPropagation()}},attrs:{value:r.isSelected(i),disabled:!!n.selectable&&!n.selectable.call(null,i,s)},on:{input:function(){r.commit("rowSelectedChanged",i)}}})},sortable:!1,resizable:!1},index:{renderHeader:function(e,t){return t.column.label||"#"},renderCell:function(e,t){var i=t.$index,n=i+1,r=t.column.index;return"number"==typeof r?n=i+r:"function"==typeof r&&(n=r(i)),e("div",[n])},sortable:!1},expand:{renderHeader:function(e,t){return t.column.label||""},renderCell:function(e,t){var i=t.row,n=t.store,r=["el-table__expand-icon"];n.states.expandRows.indexOf(i)>-1&&r.push("el-table__expand-icon--expanded");return e("div",{class:r,on:{click:function(e){e.stopPropagation(),n.toggleRowExpansion(i)}}},[e("i",{class:"el-icon el-icon-arrow-right"})])},sortable:!1,resizable:!1,className:"el-table__expand-column"}};function an(e,t){var i=t.row,n=t.column,r=t.$index,s=n.property,a=s&&Object(m.getPropByPath)(i,s).v;return n&&n.formatter?n.formatter(i,n,a,r):a}var on=Object.assign||function(e){for(var t=1;t-1}))}}},data:function(){return{isSubColumn:!1,columns:[]}},computed:{owner:function(){for(var e=this.$parent;e&&!e.tableId;)e=e.$parent;return e},columnOrTableParent:function(){for(var e=this.$parent;e&&!e.tableId&&!e.columnId;)e=e.$parent;return e},realWidth:function(){return xi(this.width)},realMinWidth:function(){return void 0!==(e=this.minWidth)&&(e=xi(e),isNaN(e)&&(e=80)),e;var e},realAlign:function(){return this.align?"is-"+this.align:null},realHeaderAlign:function(){return this.headerAlign?"is-"+this.headerAlign:this.realAlign}},methods:{getPropsData:function(){for(var e=this,t=arguments.length,i=Array(t),n=0;n3&&void 0!==arguments[3]?arguments[3]:"-";if(!e)return null;var r=(yn[i]||yn.default).parser,s=t||fn[i];return r(e,s,n)},wn=function(e,t,i){return e?(0,(yn[i]||yn.default).formatter)(e,t||fn[i]):null},Cn=function(e,t){var i=function(e,t){var i=e instanceof Date,n=t instanceof Date;return i&&n?e.getTime()===t.getTime():!i&&!n&&e===t},n=e instanceof Array,r=t instanceof Array;return n&&r?e.length===t.length&&e.every((function(e,n){return i(e,t[n])})):!n&&!r&&i(e,t)},Sn=function(e){return"string"==typeof e||e instanceof String},On=function(e){return null==e||Sn(e)||Array.isArray(e)&&2===e.length&&e.every(Sn)},Dn=r({mixins:[C.a,pn],inject:{elForm:{default:""},elFormItem:{default:""}},props:{size:String,format:String,valueFormat:String,readonly:Boolean,placeholder:String,startPlaceholder:String,endPlaceholder:String,prefixIcon:String,clearIcon:{type:String,default:"el-icon-circle-close"},name:{default:"",validator:On},disabled:Boolean,clearable:{type:Boolean,default:!0},id:{default:"",validator:On},popperClass:String,editable:{type:Boolean,default:!0},align:{type:String,default:"left"},value:{},defaultValue:{},defaultTime:{},rangeSeparator:{default:"-"},pickerOptions:{},unlinkPanels:Boolean,validateEvent:{type:Boolean,default:!0}},components:{ElInput:h.a},directives:{Clickoutside:j.a},data:function(){return{pickerVisible:!1,showClose:!1,userInput:null,valueOnOpen:null,unwatchPickerOptions:null}},watch:{pickerVisible:function(e){this.readonly||this.pickerDisabled||(e?(this.showPicker(),this.valueOnOpen=Array.isArray(this.value)?[].concat(this.value):this.value):(this.hidePicker(),this.emitChange(this.value),this.userInput=null,this.validateEvent&&this.dispatch("ElFormItem","el.form.blur"),this.$emit("blur",this),this.blur()))},parsedValue:{immediate:!0,handler:function(e){this.picker&&(this.picker.value=e)}},defaultValue:function(e){this.picker&&(this.picker.defaultValue=e)},value:function(e,t){Cn(e,t)||this.pickerVisible||!this.validateEvent||this.dispatch("ElFormItem","el.form.change",e)}},computed:{ranged:function(){return this.type.indexOf("range")>-1},reference:function(){var e=this.$refs.reference;return e.$el||e},refInput:function(){return this.reference?[].slice.call(this.reference.querySelectorAll("input")):[]},valueIsEmpty:function(){var e=this.value;if(Array.isArray(e)){for(var t=0,i=e.length;t0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.userInput=null,e.pickerVisible=e.picker.visible=i,e.emitInput(t),e.picker.resetView&&e.picker.resetView()})),this.picker.$on("select-range",(function(t,i,n){0!==e.refInput.length&&(n&&"min"!==n?"max"===n&&(e.refInput[1].setSelectionRange(t,i),e.refInput[1].focus()):(e.refInput[0].setSelectionRange(t,i),e.refInput[0].focus()))}))},unmountPicker:function(){this.picker&&(this.picker.$destroy(),this.picker.$off(),"function"==typeof this.unwatchPickerOptions&&this.unwatchPickerOptions(),this.picker.$el.parentNode.removeChild(this.picker.$el))},emitChange:function(e){Cn(e,this.valueOnOpen)||(this.$emit("change",e),this.valueOnOpen=e,this.validateEvent&&this.dispatch("ElFormItem","el.form.change",e))},emitInput:function(e){var t=this.formatToValue(e);Cn(this.value,t)||this.$emit("input",t)},isValidValue:function(e){return this.picker||this.mountPicker(),!this.picker.isValidValue||e&&this.picker.isValidValue(e)}}},dn,[],!1,null,null,null);Dn.options.__file="packages/date-picker/src/picker.vue";var En=Dn.exports,Tn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-enter":e.handleEnter,"after-leave":e.handleLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,(function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])})),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-picker__time-header"},[i("span",{staticClass:"el-date-picker__editor-wrap"},[i("el-input",{attrs:{placeholder:e.t("el.datepicker.selectDate"),value:e.visibleDate,size:"small"},on:{input:function(t){return e.userInputDate=t},change:e.handleVisibleDateChange}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleTimePickClose,expression:"handleTimePickClose"}],staticClass:"el-date-picker__editor-wrap"},[i("el-input",{ref:"input",attrs:{placeholder:e.t("el.datepicker.selectTime"),value:e.visibleTime,size:"small"},on:{focus:function(t){e.timePickerVisible=!0},input:function(t){return e.userInputTime=t},change:e.handleVisibleTimeChange}}),i("time-picker",{ref:"timepicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.timePickerVisible},on:{pick:e.handleTimePick,mounted:e.proxyTimePickerDataProperties}})],1)]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:"time"!==e.currentView,expression:"currentView !== 'time'"}],staticClass:"el-date-picker__header",class:{"el-date-picker__header--bordered":"year"===e.currentView||"month"===e.currentView}},[i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevYear")},on:{click:e.prevYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevMonth")},on:{click:e.prevMonth}}),i("span",{staticClass:"el-date-picker__header-label",attrs:{role:"button"},on:{click:e.showYearPicker}},[e._v(e._s(e.yearLabel))]),i("span",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-date-picker__header-label",class:{active:"month"===e.currentView},attrs:{role:"button"},on:{click:e.showMonthPicker}},[e._v(e._s(e.t("el.datepicker.month"+(e.month+1))))]),i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextYear")},on:{click:e.nextYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextMonth")},on:{click:e.nextMonth}})]),i("div",{staticClass:"el-picker-panel__content"},[i("date-table",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],attrs:{"selection-mode":e.selectionMode,"first-day-of-week":e.firstDayOfWeek,value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"cell-class-name":e.cellClassName,"disabled-date":e.disabledDate},on:{pick:e.handleDatePick}}),i("year-table",{directives:[{name:"show",rawName:"v-show",value:"year"===e.currentView,expression:"currentView === 'year'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleYearPick}}),i("month-table",{directives:[{name:"show",rawName:"v-show",value:"month"===e.currentView,expression:"currentView === 'month'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleMonthPick}})],1)])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.footerVisible&&"date"===e.currentView,expression:"footerVisible && currentView === 'date'"}],staticClass:"el-picker-panel__footer"},[i("el-button",{directives:[{name:"show",rawName:"v-show",value:"dates"!==e.selectionMode,expression:"selectionMode !== 'dates'"}],staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.changeToNow}},[e._v("\n "+e._s(e.t("el.datepicker.now"))+"\n ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini"},on:{click:e.confirm}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1)])])};Tn._withStripped=!0;var $n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-panel__content",class:{"has-seconds":e.showSeconds}},[i("time-spinner",{ref:"spinner",attrs:{"arrow-control":e.useArrow,"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,date:e.date},on:{change:e.handleChange,"select-range":e.setSelectionRange}})],1),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:e.handleCancel}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn",class:{confirm:!e.disabled},attrs:{type:"button"},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};$n._withStripped=!0;var Pn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-time-spinner",class:{"has-seconds":e.showSeconds}},[e.arrowControl?e._e():[i("el-scrollbar",{ref:"hours",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("hours")},mousemove:function(t){e.adjustCurrentSpinner("hours")}}},e._l(e.hoursList,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.hours,disabled:t},on:{click:function(i){e.handleClick("hours",{value:n,disabled:t})}}},[e._v(e._s(("0"+(e.amPmMode?n%12||12:n)).slice(-2))+e._s(e.amPm(n)))])})),0),i("el-scrollbar",{ref:"minutes",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("minutes")},mousemove:function(t){e.adjustCurrentSpinner("minutes")}}},e._l(e.minutesList,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.minutes,disabled:!t},on:{click:function(t){e.handleClick("minutes",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])})),0),i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.showSeconds,expression:"showSeconds"}],ref:"seconds",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("seconds")},mousemove:function(t){e.adjustCurrentSpinner("seconds")}}},e._l(60,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.seconds},on:{click:function(t){e.handleClick("seconds",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])})),0)],e.arrowControl?[i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("hours")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"hours",staticClass:"el-time-spinner__list"},e._l(e.arrowHourList,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.hours,disabled:e.hoursList[t]}},[e._v(e._s(void 0===t?"":("0"+(e.amPmMode?t%12||12:t)).slice(-2)+e.amPm(t)))])})),0)]),i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("minutes")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"minutes",staticClass:"el-time-spinner__list"},e._l(e.arrowMinuteList,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.minutes}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])})),0)]),e.showSeconds?i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("seconds")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"seconds",staticClass:"el-time-spinner__list"},e._l(e.arrowSecondList,(function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.seconds}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])})),0)]):e._e()]:e._e()],2)};Pn._withStripped=!0;var jn=r({components:{ElScrollbar:L.a},directives:{repeatClick:Ye},props:{date:{},defaultValue:{},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""}},computed:{hours:function(){return this.date.getHours()},minutes:function(){return this.date.getMinutes()},seconds:function(){return this.date.getSeconds()},hoursList:function(){return Object(hn.getRangeHours)(this.selectableRange)},minutesList:function(){return Object(hn.getRangeMinutes)(this.selectableRange,this.hours)},arrowHourList:function(){var e=this.hours;return[e>0?e-1:void 0,e,e<23?e+1:void 0]},arrowMinuteList:function(){var e=this.minutes;return[e>0?e-1:void 0,e,e<59?e+1:void 0]},arrowSecondList:function(){var e=this.seconds;return[e>0?e-1:void 0,e,e<59?e+1:void 0]}},data:function(){return{selectableRange:[],currentScrollbar:null}},mounted:function(){var e=this;this.$nextTick((function(){!e.arrowControl&&e.bindScrollEvent()}))},methods:{increase:function(){this.scrollDown(1)},decrease:function(){this.scrollDown(-1)},modifyDateField:function(e,t){switch(e){case"hours":this.$emit("change",Object(hn.modifyTime)(this.date,t,this.minutes,this.seconds));break;case"minutes":this.$emit("change",Object(hn.modifyTime)(this.date,this.hours,t,this.seconds));break;case"seconds":this.$emit("change",Object(hn.modifyTime)(this.date,this.hours,this.minutes,t))}},handleClick:function(e,t){var i=t.value;t.disabled||(this.modifyDateField(e,i),this.emitSelectRange(e),this.adjustSpinner(e,i))},emitSelectRange:function(e){"hours"===e?this.$emit("select-range",0,2):"minutes"===e?this.$emit("select-range",3,5):"seconds"===e&&this.$emit("select-range",6,8),this.currentScrollbar=e},bindScrollEvent:function(){var e=this,t=function(t){e.$refs[t].wrap.onscroll=function(i){e.handleScroll(t,i)}};t("hours"),t("minutes"),t("seconds")},handleScroll:function(e){var t=Math.min(Math.round((this.$refs[e].wrap.scrollTop-(.5*this.scrollBarHeight(e)-10)/this.typeItemHeight(e)+3)/this.typeItemHeight(e)),"hours"===e?23:59);this.modifyDateField(e,t)},adjustSpinners:function(){this.adjustSpinner("hours",this.hours),this.adjustSpinner("minutes",this.minutes),this.adjustSpinner("seconds",this.seconds)},adjustCurrentSpinner:function(e){this.adjustSpinner(e,this[e])},adjustSpinner:function(e,t){if(!this.arrowControl){var i=this.$refs[e].wrap;i&&(i.scrollTop=Math.max(0,t*this.typeItemHeight(e)))}},scrollDown:function(e){var t=this;this.currentScrollbar||this.emitSelectRange("hours");var i=this.currentScrollbar,n=this.hoursList,r=this[i];if("hours"===this.currentScrollbar){var s=Math.abs(e);e=e>0?1:-1;for(var a=n.length;a--&&s;)n[r=(r+e+n.length)%n.length]||s--;if(n[r])return}else r=(r+e+60)%60;this.modifyDateField(i,r),this.adjustSpinner(i,r),this.$nextTick((function(){return t.emitSelectRange(t.currentScrollbar)}))},amPm:function(e){if(!("a"===this.amPmMode.toLowerCase()))return"";var t=e<12?" am":" pm";return"A"===this.amPmMode&&(t=t.toUpperCase()),t},typeItemHeight:function(e){return this.$refs[e].$el.querySelector("li").offsetHeight},scrollBarHeight:function(e){return this.$refs[e].$el.offsetHeight}}},Pn,[],!1,null,null,null);jn.options.__file="packages/date-picker/src/basic/time-spinner.vue";var Mn=jn.exports,In=r({mixins:[f.a],components:{TimeSpinner:Mn},props:{visible:Boolean,timeArrowControl:Boolean},watch:{visible:function(e){var t=this;e?(this.oldValue=this.value,this.$nextTick((function(){return t.$refs.spinner.emitSelectRange("hours")}))):this.needInitAdjust=!0},value:function(e){var t=this,i=void 0;e instanceof Date?i=Object(hn.limitTimeRange)(e,this.selectableRange,this.format):e||(i=this.defaultValue?new Date(this.defaultValue):new Date),this.date=i,this.visible&&this.needInitAdjust&&(this.$nextTick((function(e){return t.adjustSpinners()})),this.needInitAdjust=!1)},selectableRange:function(e){this.$refs.spinner.selectableRange=e},defaultValue:function(e){Object(hn.isDate)(this.value)||(this.date=e?new Date(e):new Date)}},data:function(){return{popperClass:"",format:"HH:mm:ss",value:"",defaultValue:null,date:new Date,oldValue:new Date,selectableRange:[],selectionRange:[0,2],disabled:!1,arrowControl:!1,needInitAdjust:!0}},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},useArrow:function(){return this.arrowControl||this.timeArrowControl||!1},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},methods:{handleCancel:function(){this.$emit("pick",this.oldValue,!1)},handleChange:function(e){this.visible&&(this.date=Object(hn.clearMilliseconds)(e),this.isValidValue(this.date)&&this.$emit("pick",this.date,!0))},setSelectionRange:function(e,t){this.$emit("select-range",e,t),this.selectionRange=[e,t]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(!t){var i=Object(hn.clearMilliseconds)(Object(hn.limitTimeRange)(this.date,this.selectableRange,this.format));this.$emit("pick",i,e,t)}},handleKeydown:function(e){var t=e.keyCode,i={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var n=i[t];return this.changeSelectionRange(n),void e.preventDefault()}if(38===t||40===t){var r=i[t];return this.$refs.spinner.scrollDown(r),void e.preventDefault()}},isValidValue:function(e){return Object(hn.timeWithinRange)(e,this.selectableRange,this.format)},adjustSpinners:function(){return this.$refs.spinner.adjustSpinners()},changeSelectionRange:function(e){var t=[0,3].concat(this.showSeconds?[6]:[]),i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length;this.$refs.spinner.emitSelectRange(i[n])}},mounted:function(){var e=this;this.$nextTick((function(){return e.handleConfirm(!0,!0)})),this.$emit("mounted")}},$n,[],!1,null,null,null);In.options.__file="packages/date-picker/src/panel/time.vue";var An=In.exports,Nn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-year-table",on:{click:e.handleYearTableClick}},[i("tbody",[i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+0)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+1)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+1))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+2)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+2))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+3)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+3))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+4)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+4))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+5)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+5))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+6)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+6))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+7)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+7))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+8)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+8))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+9)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+9))])]),i("td"),i("td")])])])};Nn._withStripped=!0;var Ln=r({props:{disabledDate:{},value:{},defaultValue:{validator:function(e){return null===e||e instanceof Date&&Object(hn.isDate)(e)}},date:{}},computed:{startYear:function(){return 10*Math.floor(this.date.getFullYear()/10)}},methods:{getCellStyle:function(e){var t={},i=new Date;return t.disabled="function"==typeof this.disabledDate&&function(e){var t=Object(hn.getDayCountOfYear)(e),i=new Date(e,0,1);return Object(hn.range)(t).map((function(e){return Object(hn.nextDate)(i,e)}))}(e).every(this.disabledDate),t.current=Object(m.arrayFindIndex)(Object(m.coerceTruthyValueToArray)(this.value),(function(t){return t.getFullYear()===e}))>=0,t.today=i.getFullYear()===e,t.default=this.defaultValue&&this.defaultValue.getFullYear()===e,t},handleYearTableClick:function(e){var t=e.target;if("A"===t.tagName){if(Object(fe.hasClass)(t.parentNode,"disabled"))return;var i=t.textContent||t.innerText;this.$emit("pick",Number(i))}}}},Nn,[],!1,null,null,null);Ln.options.__file="packages/date-picker/src/basic/year-table.vue";var Fn=Ln.exports,Vn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-month-table",on:{click:e.handleMonthTableClick,mousemove:e.handleMouseMove}},[i("tbody",e._l(e.rows,(function(t,n){return i("tr",{key:n},e._l(t,(function(t,n){return i("td",{key:n,class:e.getCellStyle(t)},[i("div",[i("a",{staticClass:"cell"},[e._v(e._s(e.t("el.datepicker.months."+e.months[t.text])))])])])})),0)})),0)])};Vn._withStripped=!0;var zn=function(e){return new Date(e.getFullYear(),e.getMonth())},Rn=function(e){return"number"==typeof e||"string"==typeof e?zn(new Date(e)).getTime():e instanceof Date?zn(e).getTime():NaN},Bn=r({props:{disabledDate:{},value:{},selectionMode:{default:"month"},minDate:{},maxDate:{},defaultValue:{validator:function(e){return null===e||Object(hn.isDate)(e)||Array.isArray(e)&&e.every(hn.isDate)}},date:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},mixins:[f.a],watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Rn(e)!==Rn(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Rn(e)!==Rn(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{months:["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],tableRows:[[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.date.getFullYear()===i.getFullYear()&&Number(e.text)===i.getMonth()},getCellStyle:function(e){var t=this,i={},n=this.date.getFullYear(),r=new Date,s=e.text,a=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[];return i.disabled="function"==typeof this.disabledDate&&function(e,t){var i=Object(hn.getDayCountOfMonth)(e,t),n=new Date(e,t,1);return Object(hn.range)(i).map((function(e){return Object(hn.nextDate)(n,e)}))}(n,s).every(this.disabledDate),i.current=Object(m.arrayFindIndex)(Object(m.coerceTruthyValueToArray)(this.value),(function(e){return e.getFullYear()===n&&e.getMonth()===s}))>=0,i.today=r.getFullYear()===n&&r.getMonth()===s,i.default=a.some((function(i){return t.cellMatchesDate(e,i)})),e.inRange&&(i["in-range"]=!0,e.start&&(i["start-date"]=!0),e.end&&(i["end-date"]=!0)),i},getMonthOfCell:function(e){var t=this.date.getFullYear();return new Date(t,e,1)},markRange:function(e,t){e=Rn(e),t=Rn(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.rows,r=0,s=n.length;r=e&&d<=t,u.start=e&&d===e,u.end=t&&d===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getMonthOfCell(4*i+n)}}))}}},handleMonthTableClick:function(e){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName&&!Object(fe.hasClass)(t,"disabled")){var i=t.cellIndex,n=4*t.parentNode.rowIndex+i,r=this.getMonthOfCell(n);"range"===this.selectionMode?this.rangeState.selecting?(r>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:r}):this.$emit("pick",{minDate:r,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:r,maxDate:null}),this.rangeState.selecting=!0):this.$emit("pick",n)}}},computed:{rows:function(){for(var e=this,t=this.tableRows,i=this.disabledDate,n=[],r=Rn(new Date),s=0;s<3;s++)for(var a=t[s],o=function(t){var o=a[t];o||(o={row:s,column:t,type:"normal",inRange:!1,start:!1,end:!1}),o.type="normal";var l=4*s+t,u=new Date(e.date.getFullYear(),l).getTime();o.inRange=u>=Rn(e.minDate)&&u<=Rn(e.maxDate),o.start=e.minDate&&u===Rn(e.minDate),o.end=e.maxDate&&u===Rn(e.maxDate),u===r&&(o.type="today"),o.text=l;var c=new Date(u);o.disabled="function"==typeof i&&i(c),o.selected=Object(m.arrayFind)(n,(function(e){return e.getTime()===c.getTime()})),e.$set(a,t,o)},l=0;l<4;l++)o(l);return t}}},Vn,[],!1,null,null,null);Bn.options.__file="packages/date-picker/src/basic/month-table.vue";var Hn=Bn.exports,Wn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-date-table",class:{"is-week-mode":"week"===e.selectionMode},attrs:{cellspacing:"0",cellpadding:"0"},on:{click:e.handleClick,mousemove:e.handleMouseMove}},[i("tbody",[i("tr",[e.showWeekNumber?i("th",[e._v(e._s(e.t("el.datepicker.week")))]):e._e(),e._l(e.WEEKS,(function(t,n){return i("th",{key:n},[e._v(e._s(e.t("el.datepicker.weeks."+t)))])}))],2),e._l(e.rows,(function(t,n){return i("tr",{key:n,staticClass:"el-date-table__row",class:{current:e.isWeekActive(t[1])}},e._l(t,(function(t,n){return i("td",{key:n,class:e.getCellClasses(t)},[i("div",[i("span",[e._v("\n "+e._s(t.text)+"\n ")])])])})),0)}))],2)])};Wn._withStripped=!0;var qn=["sun","mon","tue","wed","thu","fri","sat"],Un=function(e){return"number"==typeof e||"string"==typeof e?Object(hn.clearTime)(new Date(e)).getTime():e instanceof Date?Object(hn.clearTime)(e).getTime():NaN},Gn=r({mixins:[f.a],props:{firstDayOfWeek:{default:7,type:Number,validator:function(e){return e>=1&&e<=7}},value:{},defaultValue:{validator:function(e){return null===e||Object(hn.isDate)(e)||Array.isArray(e)&&e.every(hn.isDate)}},date:{},selectionMode:{default:"day"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{},cellClassName:{},minDate:{},maxDate:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},computed:{offsetDay:function(){var e=this.firstDayOfWeek;return e>3?7-e:-e},WEEKS:function(){var e=this.firstDayOfWeek;return qn.concat(qn).slice(e,e+7)},year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},startDate:function(){return Object(hn.getStartDateOfMonth)(this.year,this.month)},rows:function(){var e=this,t=new Date(this.year,this.month,1),i=Object(hn.getFirstDayOfMonth)(t),n=Object(hn.getDayCountOfMonth)(t.getFullYear(),t.getMonth()),r=Object(hn.getDayCountOfMonth)(t.getFullYear(),0===t.getMonth()?11:t.getMonth()-1);i=0===i?7:i;for(var s=this.offsetDay,a=this.tableRows,o=1,l=this.startDate,u=this.disabledDate,c=this.cellClassName,d="dates"===this.selectionMode?Object(m.coerceTruthyValueToArray)(this.value):[],h=Un(new Date),p=0;p<6;p++){var f=a[p];this.showWeekNumber&&(f[0]||(f[0]={type:"week",text:Object(hn.getWeekNumber)(Object(hn.nextDate)(l,7*p+1))}));for(var v=function(t){var a=f[e.showWeekNumber?t+1:t];a||(a={row:p,column:t,type:"normal",inRange:!1,start:!1,end:!1}),a.type="normal";var v=7*p+t,g=Object(hn.nextDate)(l,v-s).getTime();if(a.inRange=g>=Un(e.minDate)&&g<=Un(e.maxDate),a.start=e.minDate&&g===Un(e.minDate),a.end=e.maxDate&&g===Un(e.maxDate),g===h&&(a.type="today"),p>=0&&p<=1){var _=i+s<0?7+i+s:i+s;t+7*p>=_?a.text=o++:(a.text=r-(_-t%7)+1+7*p,a.type="prev-month")}else o<=n?a.text=o++:(a.text=o++-n,a.type="next-month");var b=new Date(g);a.disabled="function"==typeof u&&u(b),a.selected=Object(m.arrayFind)(d,(function(e){return e.getTime()===b.getTime()})),a.customClass="function"==typeof c&&c(b),e.$set(f,e.showWeekNumber?t+1:t,a)},g=0;g<7;g++)v(g);if("week"===this.selectionMode){var _=this.showWeekNumber?1:0,b=this.showWeekNumber?7:6,y=this.isWeekActive(f[_+1]);f[_].inRange=y,f[_].start=y,f[b].inRange=y,f[b].end=y}}return a}},watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Un(e)!==Un(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Un(e)!==Un(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{tableRows:[[],[],[],[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.year===i.getFullYear()&&this.month===i.getMonth()&&Number(e.text)===i.getDate()},getCellClasses:function(e){var t=this,i=this.selectionMode,n=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[],r=[];return"normal"!==e.type&&"today"!==e.type||e.disabled?r.push(e.type):(r.push("available"),"today"===e.type&&r.push("today")),"normal"===e.type&&n.some((function(i){return t.cellMatchesDate(e,i)}))&&r.push("default"),"day"!==i||"normal"!==e.type&&"today"!==e.type||!this.cellMatchesDate(e,this.value)||r.push("current"),!e.inRange||"normal"!==e.type&&"today"!==e.type&&"week"!==this.selectionMode||(r.push("in-range"),e.start&&r.push("start-date"),e.end&&r.push("end-date")),e.disabled&&r.push("disabled"),e.selected&&r.push("selected"),e.customClass&&r.push(e.customClass),r.join(" ")},getDateOfCell:function(e,t){var i=7*e+(t-(this.showWeekNumber?1:0))-this.offsetDay;return Object(hn.nextDate)(this.startDate,i)},isWeekActive:function(e){if("week"!==this.selectionMode)return!1;var t=new Date(this.year,this.month,1),i=t.getFullYear(),n=t.getMonth();if("prev-month"===e.type&&(t.setMonth(0===n?11:n-1),t.setFullYear(0===n?i-1:i)),"next-month"===e.type&&(t.setMonth(11===n?0:n+1),t.setFullYear(11===n?i+1:i)),t.setDate(parseInt(e.text,10)),Object(hn.isDate)(this.value)){var r=(this.value.getDay()-this.firstDayOfWeek+7)%7-1;return Object(hn.prevDate)(this.value,r).getTime()===t.getTime()}return!1},markRange:function(e,t){e=Un(e),t=Un(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.startDate,r=this.rows,s=0,a=r.length;s=e&&h<=t,c.start=e&&h===e,c.end=t&&h===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getDateOfCell(i,n)}}))}}},handleClick:function(e){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n="week"===this.selectionMode?1:t.cellIndex,r=this.rows[i][n];if(!r.disabled&&"week"!==r.type){var s,a,o,l=this.getDateOfCell(i,n);if("range"===this.selectionMode)this.rangeState.selecting?(l>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:l}):this.$emit("pick",{minDate:l,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:l,maxDate:null}),this.rangeState.selecting=!0);else if("day"===this.selectionMode)this.$emit("pick",l);else if("week"===this.selectionMode){var u=Object(hn.getWeekNumber)(l),c=l.getFullYear()+"w"+u;this.$emit("pick",{year:l.getFullYear(),week:u,value:c,date:l})}else if("dates"===this.selectionMode){var d=this.value||[],h=r.selected?(s=d,(o="function"==typeof(a=function(e){return e.getTime()===l.getTime()})?Object(m.arrayFindIndex)(s,a):s.indexOf(a))>=0?[].concat(s.slice(0,o),s.slice(o+1)):s):[].concat(d,[l]);this.$emit("pick",h)}}}}}},Wn,[],!1,null,null,null);Gn.options.__file="packages/date-picker/src/basic/date-table.vue";var Yn=Gn.exports,Kn=r({mixins:[f.a],directives:{Clickoutside:j.a},watch:{showTime:function(e){var t=this;e&&this.$nextTick((function(e){var i=t.$refs.input.$el;i&&(t.pickerWidth=i.getBoundingClientRect().width+10)}))},value:function(e){"dates"===this.selectionMode&&this.value||(Object(hn.isDate)(e)?this.date=new Date(e):this.date=this.getDefaultValue())},defaultValue:function(e){Object(hn.isDate)(this.value)||(this.date=e?new Date(e):new Date)},timePickerVisible:function(e){var t=this;e&&this.$nextTick((function(){return t.$refs.timepicker.adjustSpinners()}))},selectionMode:function(e){"month"===e?"year"===this.currentView&&"month"===this.currentView||(this.currentView="month"):"dates"===e&&(this.currentView="date")}},methods:{proxyTimePickerDataProperties:function(){var e,t=this,i=function(e){t.$refs.timepicker.value=e},n=function(e){t.$refs.timepicker.date=e},r=function(e){t.$refs.timepicker.selectableRange=e};this.$watch("value",i),this.$watch("date",n),this.$watch("selectableRange",r),e=this.timeFormat,t.$refs.timepicker.format=e,i(this.value),n(this.date),r(this.selectableRange)},handleClear:function(){this.date=this.getDefaultValue(),this.$emit("pick",null)},emit:function(e){for(var t=this,i=arguments.length,n=Array(i>1?i-1:0),r=1;r0)||Object(hn.timeWithinRange)(e,this.selectableRange,this.format||"HH:mm:ss")}},components:{TimePicker:An,YearTable:Fn,MonthTable:Hn,DateTable:Yn,ElInput:h.a,ElButton:U.a},data:function(){return{popperClass:"",date:new Date,value:"",defaultValue:null,defaultTime:null,showTime:!1,selectionMode:"day",shortcuts:"",visible:!1,currentView:"date",disabledDate:"",cellClassName:"",selectableRange:[],firstDayOfWeek:7,showWeekNumber:!1,timePickerVisible:!1,format:"",arrowControl:!1,userInputDate:null,userInputTime:null}},computed:{year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},week:function(){return Object(hn.getWeekNumber)(this.date)},monthDate:function(){return this.date.getDate()},footerVisible:function(){return this.showTime||"dates"===this.selectionMode},visibleTime:function(){return null!==this.userInputTime?this.userInputTime:Object(hn.formatDate)(this.value||this.defaultValue,this.timeFormat)},visibleDate:function(){return null!==this.userInputDate?this.userInputDate:Object(hn.formatDate)(this.value||this.defaultValue,this.dateFormat)},yearLabel:function(){var e=this.t("el.datepicker.year");if("year"===this.currentView){var t=10*Math.floor(this.year/10);return e?t+" "+e+" - "+(t+9)+" "+e:t+" - "+(t+9)}return this.year+" "+e},timeFormat:function(){return this.format?Object(hn.extractTimeFormat)(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(hn.extractDateFormat)(this.format):"yyyy-MM-dd"}}},Tn,[],!1,null,null,null);Kn.options.__file="packages/date-picker/src/panel/date.vue";var Xn=Kn.exports,Zn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,(function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])})),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-range-picker__time-header"},[i("span",{staticClass:"el-date-range-picker__editors-wrap"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{ref:"minInput",staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startDate"),value:e.minVisibleDate},on:{input:function(t){return e.handleDateInput(t,"min")},change:function(t){return e.handleDateChange(t,"min")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMinTimeClose,expression:"handleMinTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startTime"),value:e.minVisibleTime},on:{focus:function(t){e.minTimePickerVisible=!0},input:function(t){return e.handleTimeInput(t,"min")},change:function(t){return e.handleTimeChange(t,"min")}}}),i("time-picker",{ref:"minTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.minTimePickerVisible},on:{pick:e.handleMinTimePick,mounted:function(t){e.$refs.minTimePicker.format=e.timeFormat}}})],1)]),i("span",{staticClass:"el-icon-arrow-right"}),i("span",{staticClass:"el-date-range-picker__editors-wrap is-right"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endDate"),value:e.maxVisibleDate,readonly:!e.minDate},on:{input:function(t){return e.handleDateInput(t,"max")},change:function(t){return e.handleDateChange(t,"max")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMaxTimeClose,expression:"handleMaxTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endTime"),value:e.maxVisibleTime,readonly:!e.minDate},on:{focus:function(t){e.minDate&&(e.maxTimePickerVisible=!0)},input:function(t){return e.handleTimeInput(t,"max")},change:function(t){return e.handleTimeChange(t,"max")}}}),i("time-picker",{ref:"maxTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.maxTimePickerVisible},on:{pick:e.handleMaxTimePick,mounted:function(t){e.$refs.maxTimePicker.format=e.timeFormat}}})],1)])]):e._e(),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevMonth}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.leftNextMonth}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.rightPrevMonth}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",attrs:{type:"button"},on:{click:e.rightNextMonth}}),i("div",[e._v(e._s(e.rightLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"cell-class-name":e.cellClassName,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2),e.showTime?i("div",{staticClass:"el-picker-panel__footer"},[i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.handleClear}},[e._v("\n "+e._s(e.t("el.datepicker.clear"))+"\n ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm(!1)}}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1):e._e()])])};Zn._withStripped=!0;var Qn=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(hn.nextDate)(new Date(e),1)]:[new Date,Object(hn.nextDate)(new Date,1)]},Jn=r({mixins:[f.a],directives:{Clickoutside:j.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.leftDate.getMonth()+1))},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.rightDate.getMonth()+1))},leftYear:function(){return this.leftDate.getFullYear()},leftMonth:function(){return this.leftDate.getMonth()},leftMonthDate:function(){return this.leftDate.getDate()},rightYear:function(){return this.rightDate.getFullYear()},rightMonth:function(){return this.rightDate.getMonth()},rightMonthDate:function(){return this.rightDate.getDate()},minVisibleDate:function(){return null!==this.dateUserInput.min?this.dateUserInput.min:this.minDate?Object(hn.formatDate)(this.minDate,this.dateFormat):""},maxVisibleDate:function(){return null!==this.dateUserInput.max?this.dateUserInput.max:this.maxDate||this.minDate?Object(hn.formatDate)(this.maxDate||this.minDate,this.dateFormat):""},minVisibleTime:function(){return null!==this.timeUserInput.min?this.timeUserInput.min:this.minDate?Object(hn.formatDate)(this.minDate,this.timeFormat):""},maxVisibleTime:function(){return null!==this.timeUserInput.max?this.timeUserInput.max:this.maxDate||this.minDate?Object(hn.formatDate)(this.maxDate||this.minDate,this.timeFormat):""},timeFormat:function(){return this.format?Object(hn.extractTimeFormat)(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(hn.extractDateFormat)(this.format):"yyyy-MM-dd"},enableMonthArrow:function(){var e=(this.leftMonth+1)%12,t=this.leftMonth+1>=12?1:0;return this.unlinkPanels&&new Date(this.leftYear+t,e)=12}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(hn.nextMonth)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},showTime:!1,shortcuts:"",visible:"",disabledDate:"",cellClassName:"",firstDayOfWeek:7,minTimePickerVisible:!1,maxTimePickerVisible:!1,format:"",arrowControl:!1,unlinkPanels:!1,dateUserInput:{min:null,max:null},timeUserInput:{min:null,max:null}}},watch:{minDate:function(e){var t=this;this.dateUserInput.min=null,this.timeUserInput.min=null,this.$nextTick((function(){if(t.$refs.maxTimePicker&&t.maxDate&&t.maxDatethis.maxDate&&(this.maxDate=this.minDate)):(this.maxDate=Object(hn.modifyDate)(this.maxDate,i.getFullYear(),i.getMonth(),i.getDate()),this.maxDatethis.maxDate&&(this.maxDate=this.minDate),this.$refs.minTimePicker.value=this.minDate,this.minTimePickerVisible=!1):(this.maxDate=Object(hn.modifyTime)(this.maxDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.maxDate1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],r=Object(hn.modifyWithTimeString)(e.minDate,n[0]),s=Object(hn.modifyWithTimeString)(e.maxDate,n[1]);this.maxDate===s&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=s,this.minDate=r,setTimeout((function(){t.maxDate=s,t.minDate=r}),10),i&&!this.showTime&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleMinTimePick:function(e,t,i){this.minDate=this.minDate||new Date,e&&(this.minDate=Object(hn.modifyTime)(this.minDate,e.getHours(),e.getMinutes(),e.getSeconds())),i||(this.minTimePickerVisible=t),(!this.maxDate||this.maxDate&&this.maxDate.getTime()this.maxDate.getTime()&&(this.minDate=new Date(this.maxDate))},handleMaxTimeClose:function(){this.maxTimePickerVisible=!1},leftPrevYear:function(){this.leftDate=Object(hn.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(hn.nextMonth)(this.leftDate))},leftPrevMonth:function(){this.leftDate=Object(hn.prevMonth)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(hn.nextMonth)(this.leftDate))},rightNextYear:function(){this.unlinkPanels?this.rightDate=Object(hn.nextYear)(this.rightDate):(this.leftDate=Object(hn.nextYear)(this.leftDate),this.rightDate=Object(hn.nextMonth)(this.leftDate))},rightNextMonth:function(){this.unlinkPanels?this.rightDate=Object(hn.nextMonth)(this.rightDate):(this.leftDate=Object(hn.nextMonth)(this.leftDate),this.rightDate=Object(hn.nextMonth)(this.leftDate))},leftNextYear:function(){this.leftDate=Object(hn.nextYear)(this.leftDate)},leftNextMonth:function(){this.leftDate=Object(hn.nextMonth)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(hn.prevYear)(this.rightDate)},rightPrevMonth:function(){this.rightDate=Object(hn.prevMonth)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(hn.isDate)(e[0])&&Object(hn.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate&&null==this.maxDate&&(this.rangeState.selecting=!1),this.minDate=this.value&&Object(hn.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(hn.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{TimePicker:An,DateTable:Yn,ElInput:h.a,ElButton:U.a}},Zn,[],!1,null,null,null);Jn.options.__file="packages/date-picker/src/panel/date-range.vue";var er=Jn.exports,tr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,(function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])})),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("div",[e._v(e._s(e.rightLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2)])])};tr._withStripped=!0;var ir=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(hn.nextMonth)(new Date(e))]:[new Date,Object(hn.nextMonth)(new Date)]},nr=r({mixins:[f.a],directives:{Clickoutside:j.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")},leftYear:function(){return this.leftDate.getFullYear()},rightYear:function(){return this.rightDate.getFullYear()===this.leftDate.getFullYear()?this.leftDate.getFullYear()+1:this.rightDate.getFullYear()},enableYearArrow:function(){return this.unlinkPanels&&this.rightYear>this.leftYear+1}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(hn.nextYear)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},shortcuts:"",visible:"",disabledDate:"",format:"",arrowControl:!1,unlinkPanels:!1}},watch:{value:function(e){if(e){if(Array.isArray(e))if(this.minDate=Object(hn.isDate)(e[0])?new Date(e[0]):null,this.maxDate=Object(hn.isDate)(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),i=this.maxDate.getFullYear();this.rightDate=t===i?Object(hn.nextYear)(this.maxDate):this.maxDate}else this.rightDate=Object(hn.nextYear)(this.leftDate);else this.leftDate=ir(this.defaultValue)[0],this.rightDate=Object(hn.nextYear)(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=ir(e),i=t[0],n=t[1];this.leftDate=i,this.rightDate=e&&e[1]&&i.getFullYear()!==n.getFullYear()&&this.unlinkPanels?n:Object(hn.nextYear)(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=ir(this.defaultValue)[0],this.rightDate=Object(hn.nextYear)(this.leftDate),this.$emit("pick",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleRangePick:function(e){var t=this,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],r=Object(hn.modifyWithTimeString)(e.minDate,n[0]),s=Object(hn.modifyWithTimeString)(e.maxDate,n[1]);this.maxDate===s&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=s,this.minDate=r,setTimeout((function(){t.maxDate=s,t.minDate=r}),10),i&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},leftPrevYear:function(){this.leftDate=Object(hn.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(hn.prevYear)(this.rightDate))},rightNextYear:function(){this.unlinkPanels||(this.leftDate=Object(hn.nextYear)(this.leftDate)),this.rightDate=Object(hn.nextYear)(this.rightDate)},leftNextYear:function(){this.leftDate=Object(hn.nextYear)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(hn.prevYear)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(hn.isDate)(e[0])&&Object(hn.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&Object(hn.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(hn.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{MonthTable:Hn,ElInput:h.a,ElButton:U.a}},tr,[],!1,null,null,null);nr.options.__file="packages/date-picker/src/panel/month-range.vue";var rr=nr.exports,sr=function(e){return"daterange"===e||"datetimerange"===e?er:"monthrange"===e?rr:Xn},ar={mixins:[En],name:"ElDatePicker",props:{type:{type:String,default:"date"},timeArrowControl:Boolean},watch:{type:function(e){this.picker?(this.unmountPicker(),this.panel=sr(e),this.mountPicker()):this.panel=sr(e)}},created:function(){this.panel=sr(this.type)},install:function(e){e.component(ar.name,ar)}},or=ar,lr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],ref:"popper",staticClass:"el-picker-panel time-select el-popper",class:e.popperClass,style:{width:e.width+"px"}},[i("el-scrollbar",{attrs:{noresize:"","wrap-class":"el-picker-panel__content"}},e._l(e.items,(function(t){return i("div",{key:t.value,staticClass:"time-select-item",class:{selected:e.value===t.value,disabled:t.disabled,default:t.value===e.defaultValue},attrs:{disabled:t.disabled},on:{click:function(i){e.handleClick(t)}}},[e._v(e._s(t.value))])})),0)],1)])};lr._withStripped=!0;var ur=function(e){var t=(e||"").split(":");return t.length>=2?{hours:parseInt(t[0],10),minutes:parseInt(t[1],10)}:null},cr=function(e,t){var i=ur(e),n=ur(t),r=i.minutes+60*i.hours,s=n.minutes+60*n.hours;return r===s?0:r>s?1:-1},dr=function(e,t){var i=ur(e),n=ur(t),r={hours:i.hours,minutes:i.minutes};return r.minutes+=n.minutes,r.hours+=n.hours,r.hours+=Math.floor(r.minutes/60),r.minutes=r.minutes%60,function(e){return(e.hours<10?"0"+e.hours:e.hours)+":"+(e.minutes<10?"0"+e.minutes:e.minutes)}(r)},hr=r({components:{ElScrollbar:L.a},watch:{value:function(e){var t=this;e&&this.$nextTick((function(){return t.scrollToOption()}))}},methods:{handleClick:function(e){e.disabled||this.$emit("pick",e.value)},handleClear:function(){this.$emit("pick",null)},scrollToOption:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:".selected",t=this.$refs.popper.querySelector(".el-picker-panel__content");Vt()(t,t.querySelector(e))},handleMenuEnter:function(){var e=this,t=-1!==this.items.map((function(e){return e.value})).indexOf(this.value),i=-1!==this.items.map((function(e){return e.value})).indexOf(this.defaultValue),n=(t?".selected":i&&".default")||".time-select-item:not(.disabled)";this.$nextTick((function(){return e.scrollToOption(n)}))},scrollDown:function(e){for(var t=this.items,i=t.length,n=t.length,r=t.map((function(e){return e.value})).indexOf(this.value);n--;)if(!t[r=(r+e+i)%i].disabled)return void this.$emit("pick",t[r].value,!0)},isValidValue:function(e){return-1!==this.items.filter((function(e){return!e.disabled})).map((function(e){return e.value})).indexOf(e)},handleKeydown:function(e){var t=e.keyCode;if(38===t||40===t){var i={40:1,38:-1}[t.toString()];return this.scrollDown(i),void e.stopPropagation()}}},data:function(){return{popperClass:"",start:"09:00",end:"18:00",step:"00:30",value:"",defaultValue:"",visible:!1,minTime:"",maxTime:"",width:0}},computed:{items:function(){var e=this.start,t=this.end,i=this.step,n=[];if(e&&t&&i)for(var r=e;cr(r,t)<=0;)n.push({value:r,disabled:cr(r,this.minTime||"-1:-1")<=0||cr(r,this.maxTime||"100:100")>=0}),r=dr(r,i);return n}}},lr,[],!1,null,null,null);hr.options.__file="packages/date-picker/src/panel/time-select.vue";var pr=hr.exports,fr={mixins:[En],name:"ElTimeSelect",componentName:"ElTimeSelect",props:{type:{type:String,default:"time-select"}},beforeCreate:function(){this.panel=pr},install:function(e){e.component(fr.name,fr)}},mr=fr,vr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-range-picker el-picker-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-range-picker__content"},[i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.startTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"minSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.minDate},on:{change:e.handleMinChange,"select-range":e.setMinSelectionRange}})],1)]),i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.endTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"maxSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.maxDate},on:{change:e.handleMaxChange,"select-range":e.setMaxSelectionRange}})],1)])]),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:function(t){e.handleCancel()}}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn confirm",attrs:{type:"button",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};vr._withStripped=!0;var gr=Object(hn.parseDate)("00:00:00","HH:mm:ss"),_r=Object(hn.parseDate)("23:59:59","HH:mm:ss"),br=function(e){return Object(hn.modifyDate)(_r,e.getFullYear(),e.getMonth(),e.getDate())},yr=function(e,t){return new Date(Math.min(e.getTime()+t,br(e).getTime()))},xr=r({mixins:[f.a],components:{TimeSpinner:Mn},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},offset:function(){return this.showSeconds?11:8},spinner:function(){return this.selectionRange[0]this.maxDate.getTime()},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},data:function(){return{popperClass:"",minDate:new Date,maxDate:new Date,value:[],oldValue:[new Date,new Date],defaultValue:null,format:"HH:mm:ss",visible:!1,selectionRange:[0,2],arrowControl:!1}},watch:{value:function(e){Array.isArray(e)?(this.minDate=new Date(e[0]),this.maxDate=new Date(e[1])):Array.isArray(this.defaultValue)?(this.minDate=new Date(this.defaultValue[0]),this.maxDate=new Date(this.defaultValue[1])):this.defaultValue?(this.minDate=new Date(this.defaultValue),this.maxDate=yr(new Date(this.defaultValue),36e5)):(this.minDate=new Date,this.maxDate=yr(new Date,36e5))},visible:function(e){var t=this;e&&(this.oldValue=this.value,this.$nextTick((function(){return t.$refs.minSpinner.emitSelectRange("hours")})))}},methods:{handleClear:function(){this.$emit("pick",null)},handleCancel:function(){this.$emit("pick",this.oldValue)},handleMinChange:function(e){this.minDate=Object(hn.clearMilliseconds)(e),this.handleChange()},handleMaxChange:function(e){this.maxDate=Object(hn.clearMilliseconds)(e),this.handleChange()},handleChange:function(){var e;this.isValidValue([this.minDate,this.maxDate])&&(this.$refs.minSpinner.selectableRange=[[(e=this.minDate,Object(hn.modifyDate)(gr,e.getFullYear(),e.getMonth(),e.getDate())),this.maxDate]],this.$refs.maxSpinner.selectableRange=[[this.minDate,br(this.maxDate)]],this.$emit("pick",[this.minDate,this.maxDate],!0))},setMinSelectionRange:function(e,t){this.$emit("select-range",e,t,"min"),this.selectionRange=[e,t]},setMaxSelectionRange:function(e,t){this.$emit("select-range",e,t,"max"),this.selectionRange=[e+this.offset,t+this.offset]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$refs.minSpinner.selectableRange,i=this.$refs.maxSpinner.selectableRange;this.minDate=Object(hn.limitTimeRange)(this.minDate,t,this.format),this.maxDate=Object(hn.limitTimeRange)(this.maxDate,i,this.format),this.$emit("pick",[this.minDate,this.maxDate],e)},adjustSpinners:function(){this.$refs.minSpinner.adjustSpinners(),this.$refs.maxSpinner.adjustSpinners()},changeSelectionRange:function(e){var t=this.showSeconds?[0,3,6,11,14,17]:[0,3,8,11],i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length,r=t.length/2;n-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(m.generateId)()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),t&&(Object(fe.addClass)(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),i.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(fe.on)(t,"focusin",(function(){e.handleFocus();var i=t.__vue__;i&&"function"==typeof i.focus&&i.focus()})),Object(fe.on)(i,"focusin",this.handleFocus),Object(fe.on)(t,"focusout",this.handleBlur),Object(fe.on)(i,"focusout",this.handleBlur)),Object(fe.on)(t,"keydown",this.handleKeydown),Object(fe.on)(t,"click",this.handleClick)),"click"===this.trigger?(Object(fe.on)(t,"click",this.doToggle),Object(fe.on)(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(fe.on)(t,"mouseenter",this.handleMouseEnter),Object(fe.on)(i,"mouseenter",this.handleMouseEnter),Object(fe.on)(t,"mouseleave",this.handleMouseLeave),Object(fe.on)(i,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(fe.on)(t,"focusin",this.doShow),Object(fe.on)(t,"focusout",this.doClose)):(Object(fe.on)(t,"mousedown",this.doShow),Object(fe.on)(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(fe.addClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(fe.removeClass)(this.referenceElm,"focusing")},handleBlur:function(){Object(fe.removeClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout((function(){e.showPopper=!0}),this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout((function(){e.showPopper=!1}),this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&i&&!i.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(fe.off)(e,"click",this.doToggle),Object(fe.off)(e,"mouseup",this.doClose),Object(fe.off)(e,"mousedown",this.doShow),Object(fe.off)(e,"focusin",this.doShow),Object(fe.off)(e,"focusout",this.doClose),Object(fe.off)(e,"mousedown",this.doShow),Object(fe.off)(e,"mouseup",this.doClose),Object(fe.off)(e,"mouseleave",this.handleMouseLeave),Object(fe.off)(e,"mouseenter",this.handleMouseEnter),Object(fe.off)(document,"click",this.handleDocumentClick)}},Sr,[],!1,null,null,null);Or.options.__file="packages/popover/src/main.vue";var Dr=Or.exports,Er=function(e,t,i){var n=t.expression?t.value:t.arg,r=i.context.$refs[n];r&&(Array.isArray(r)?r[0].$refs.reference=e:r.$refs.reference=e)},Tr={bind:function(e,t,i){Er(e,t,i)},inserted:function(e,t,i){Er(e,t,i)}};di.a.directive("popover",Tr),Dr.install=function(e){e.directive("popover",Tr),e.component(Dr.name,Dr)},Dr.directive=Tr;var $r=Dr,Pr={name:"ElTooltip",mixins:[A.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+Object(m.generateId)(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new di.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=$()(200,(function(){return e.handleClosePopper()})))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var i=this.getFirstElement();if(!i)return null;var n=i.data=i.data||{};return n.staticClass=this.addTooltipClass(n.staticClass),i},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),Object(fe.on)(this.referenceElm,"mouseenter",this.show),Object(fe.on)(this.referenceElm,"mouseleave",this.hide),Object(fe.on)(this.referenceElm,"focus",(function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()})),Object(fe.on)(this.referenceElm,"blur",this.handleBlur),Object(fe.on)(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick((function(){e.value&&e.updatePopper()}))},watch:{focusing:function(e){e?Object(fe.addClass)(this.referenceElm,"focusing"):Object(fe.removeClass)(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout((function(){e.showPopper=!0}),this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout((function(){e.showPopper=!1}),this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;i0){var t=(Ur=Yr.shift()).options;for(var i in t)t.hasOwnProperty(i)&&(Gr[i]=t[i]);void 0===t.callback&&(Gr.callback=Kr);var n=Gr.callback;Gr.callback=function(t,i){n(t,i),e()},Object(Br.isVNode)(Gr.message)?(Gr.$slots.default=[Gr.message],Gr.message=null):delete Gr.$slots.default,["modal","showClose","closeOnClickModal","closeOnPressEscape","closeOnHashChange"].forEach((function(e){void 0===Gr[e]&&(Gr[e]=!0)})),document.body.appendChild(Gr.$el),di.a.nextTick((function(){Gr.visible=!0}))}},Zr=function e(t,i){if(!di.a.prototype.$isServer){if("string"==typeof t||Object(Br.isVNode)(t)?(t={message:t},"string"==typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!i&&(i=t.callback),"undefined"!=typeof Promise)return new Promise((function(n,r){Yr.push({options:Be()({},Wr,e.defaults,t),callback:i,resolve:n,reject:r}),Xr()}));Yr.push({options:Be()({},Wr,e.defaults,t),callback:i}),Xr()}};Zr.setDefaults=function(e){Zr.defaults=e},Zr.alert=function(e,t,i){return"object"===(void 0===t?"undefined":Hr(t))?(i=t,t=""):void 0===t&&(t=""),Zr(Be()({title:t,message:e,$type:"alert",closeOnPressEscape:!1,closeOnClickModal:!1},i))},Zr.confirm=function(e,t,i){return"object"===(void 0===t?"undefined":Hr(t))?(i=t,t=""):void 0===t&&(t=""),Zr(Be()({title:t,message:e,$type:"confirm",showCancelButton:!0},i))},Zr.prompt=function(e,t,i){return"object"===(void 0===t?"undefined":Hr(t))?(i=t,t=""):void 0===t&&(t=""),Zr(Be()({title:t,message:e,showCancelButton:!0,showInput:!0,$type:"prompt"},i))},Zr.close=function(){Gr.doClose(),Gr.visible=!1,Yr=[],Ur=null};var Qr=Zr,Jr=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-breadcrumb",attrs:{"aria-label":"Breadcrumb",role:"navigation"}},[this._t("default")],2)};Jr._withStripped=!0;var es=r({name:"ElBreadcrumb",props:{separator:{type:String,default:"/"},separatorClass:{type:String,default:""}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(".el-breadcrumb__item");e.length&&e[e.length-1].setAttribute("aria-current","page")}},Jr,[],!1,null,null,null);es.options.__file="packages/breadcrumb/src/breadcrumb.vue";var ts=es.exports;ts.install=function(e){e.component(ts.name,ts)};var is=ts,ns=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-breadcrumb__item"},[t("span",{ref:"link",class:["el-breadcrumb__inner",this.to?"is-link":""],attrs:{role:"link"}},[this._t("default")],2),this.separatorClass?t("i",{staticClass:"el-breadcrumb__separator",class:this.separatorClass}):t("span",{staticClass:"el-breadcrumb__separator",attrs:{role:"presentation"}},[this._v(this._s(this.separator))])])};ns._withStripped=!0;var rs=r({name:"ElBreadcrumbItem",props:{to:{},replace:Boolean},data:function(){return{separator:"",separatorClass:""}},inject:["elBreadcrumb"],mounted:function(){var e=this;this.separator=this.elBreadcrumb.separator,this.separatorClass=this.elBreadcrumb.separatorClass;var t=this.$refs.link;t.setAttribute("role","link"),t.addEventListener("click",(function(t){var i=e.to,n=e.$router;i&&n&&(e.replace?n.replace(i):n.push(i))}))}},ns,[],!1,null,null,null);rs.options.__file="packages/breadcrumb/src/breadcrumb-item.vue";var ss=rs.exports;ss.install=function(e){e.component(ss.name,ss)};var as=ss,os=function(){var e=this.$createElement;return(this._self._c||e)("form",{staticClass:"el-form",class:[this.labelPosition?"el-form--label-"+this.labelPosition:"",{"el-form--inline":this.inline}]},[this._t("default")],2)};os._withStripped=!0;var ls=r({name:"ElForm",componentName:"ElForm",provide:function(){return{elForm:this}},props:{model:Object,rules:Object,labelPosition:String,labelWidth:String,labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:String,disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1}},watch:{rules:function(){this.fields.forEach((function(e){e.removeValidateEvents(),e.addValidateEvents()})),this.validateOnRuleChange&&this.validate((function(){}))}},computed:{autoLabelWidth:function(){if(!this.potentialLabelWidthArr.length)return 0;var e=Math.max.apply(Math,this.potentialLabelWidthArr);return e?e+"px":""}},data:function(){return{fields:[],potentialLabelWidthArr:[]}},created:function(){var e=this;this.$on("el.form.addField",(function(t){t&&e.fields.push(t)})),this.$on("el.form.removeField",(function(t){t.prop&&e.fields.splice(e.fields.indexOf(t),1)}))},methods:{resetFields:function(){this.model?this.fields.forEach((function(e){e.resetField()})):console.warn("[Element Warn][Form]model is required for resetFields to work.")},clearValidate:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.length?"string"==typeof e?this.fields.filter((function(t){return e===t.prop})):this.fields.filter((function(t){return e.indexOf(t.prop)>-1})):this.fields;t.forEach((function(e){e.clearValidate()}))},validate:function(e){var t=this;if(this.model){var i=void 0;"function"!=typeof e&&window.Promise&&(i=new window.Promise((function(t,i){e=function(e){e?t(e):i(e)}})));var n=!0,r=0;0===this.fields.length&&e&&e(!0);var s={};return this.fields.forEach((function(i){i.validate("",(function(i,a){i&&(n=!1),s=Be()({},s,a),"function"==typeof e&&++r===t.fields.length&&e(n,s)}))})),i||void 0}console.warn("[Element Warn][Form]model is required for validate to work!")},validateField:function(e,t){e=[].concat(e);var i=this.fields.filter((function(t){return-1!==e.indexOf(t.prop)}));i.length?i.forEach((function(e){e.validate("",t)})):console.warn("[Element Warn]please pass correct props!")},getLabelWidthIndex:function(e){var t=this.potentialLabelWidthArr.indexOf(e);if(-1===t)throw new Error("[ElementForm]unpected width ",e);return t},registerLabelWidth:function(e,t){if(e&&t){var i=this.getLabelWidthIndex(t);this.potentialLabelWidthArr.splice(i,1,e)}else e&&this.potentialLabelWidthArr.push(e)},deregisterLabelWidth:function(e){var t=this.getLabelWidthIndex(e);this.potentialLabelWidthArr.splice(t,1)}}},os,[],!1,null,null,null);ls.options.__file="packages/form/src/form.vue";var us=ls.exports;us.install=function(e){e.component(us.name,us)};var cs=us,ds=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-form-item",class:[{"el-form-item--feedback":e.elForm&&e.elForm.statusIcon,"is-error":"error"===e.validateState,"is-validating":"validating"===e.validateState,"is-success":"success"===e.validateState,"is-required":e.isRequired||e.required,"is-no-asterisk":e.elForm&&e.elForm.hideRequiredAsterisk},e.sizeClass?"el-form-item--"+e.sizeClass:""]},[i("label-wrap",{attrs:{"is-auto-width":e.labelStyle&&"auto"===e.labelStyle.width,"update-all":"auto"===e.form.labelWidth}},[e.label||e.$slots.label?i("label",{staticClass:"el-form-item__label",style:e.labelStyle,attrs:{for:e.labelFor}},[e._t("label",[e._v(e._s(e.label+e.form.labelSuffix))])],2):e._e()]),i("div",{staticClass:"el-form-item__content",style:e.contentStyle},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-top"}},["error"===e.validateState&&e.showMessage&&e.form.showMessage?e._t("error",[i("div",{staticClass:"el-form-item__error",class:{"el-form-item__error--inline":"boolean"==typeof e.inlineMessage?e.inlineMessage:e.elForm&&e.elForm.inlineMessage||!1}},[e._v("\n "+e._s(e.validateMessage)+"\n ")])],{error:e.validateMessage}):e._e()],2)],2)],1)};ds._withStripped=!0;var hs=i(40),ps=i.n(hs),fs=r({props:{isAutoWidth:Boolean,updateAll:Boolean},inject:["elForm","elFormItem"],render:function(){var e=arguments[0],t=this.$slots.default;if(!t)return null;if(this.isAutoWidth){var i=this.elForm.autoLabelWidth,n={};if(i&&"auto"!==i){var r=parseInt(i,10)-this.computedWidth;r&&(n.marginLeft=r+"px")}return e("div",{class:"el-form-item__label-wrap",style:n},[t])}return t[0]},methods:{getLabelWidth:function(){if(this.$el&&this.$el.firstElementChild){var e=window.getComputedStyle(this.$el.firstElementChild).width;return Math.ceil(parseFloat(e))}return 0},updateLabelWidth:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"update";this.$slots.default&&this.isAutoWidth&&this.$el.firstElementChild&&("update"===e?this.computedWidth=this.getLabelWidth():"remove"===e&&this.elForm.deregisterLabelWidth(this.computedWidth))}},watch:{computedWidth:function(e,t){this.updateAll&&(this.elForm.registerLabelWidth(e,t),this.elFormItem.updateComputedLabelWidth(e))}},data:function(){return{computedWidth:0}},mounted:function(){this.updateLabelWidth("update")},updated:function(){this.updateLabelWidth("update")},beforeDestroy:function(){this.updateLabelWidth("remove")}},void 0,void 0,!1,null,null,null);fs.options.__file="packages/form/src/label-wrap.vue";var ms=fs.exports,vs=r({name:"ElFormItem",componentName:"ElFormItem",mixins:[C.a],provide:function(){return{elFormItem:this}},inject:["elForm"],props:{label:String,labelWidth:String,prop:String,required:{type:Boolean,default:void 0},rules:[Object,Array],error:String,validateStatus:String,for:String,inlineMessage:{type:[String,Boolean],default:""},showMessage:{type:Boolean,default:!0},size:String},components:{LabelWrap:ms},watch:{error:{immediate:!0,handler:function(e){this.validateMessage=e,this.validateState=e?"error":""}},validateStatus:function(e){this.validateState=e}},computed:{labelFor:function(){return this.for||this.prop},labelStyle:function(){var e={};if("top"===this.form.labelPosition)return e;var t=this.labelWidth||this.form.labelWidth;return t&&(e.width=t),e},contentStyle:function(){var e={},t=this.label;if("top"===this.form.labelPosition||this.form.inline)return e;if(!t&&!this.labelWidth&&this.isNested)return e;var i=this.labelWidth||this.form.labelWidth;return"auto"===i?"auto"===this.labelWidth?e.marginLeft=this.computedLabelWidth:"auto"===this.form.labelWidth&&(e.marginLeft=this.elForm.autoLabelWidth):e.marginLeft=i,e},form:function(){for(var e=this.$parent,t=e.$options.componentName;"ElForm"!==t;)"ElFormItem"===t&&(this.isNested=!0),t=(e=e.$parent).$options.componentName;return e},fieldValue:function(){var e=this.form.model;if(e&&this.prop){var t=this.prop;return-1!==t.indexOf(":")&&(t=t.replace(/:/,".")),Object(m.getPropByPath)(e,t,!0).v}},isRequired:function(){var e=this.getRules(),t=!1;return e&&e.length&&e.every((function(e){return!e.required||(t=!0,!1)})),t},_formSize:function(){return this.elForm.size},elFormItemSize:function(){return this.size||this._formSize},sizeClass:function(){return this.elFormItemSize||(this.$ELEMENT||{}).size}},data:function(){return{validateState:"",validateMessage:"",validateDisabled:!1,validator:{},isNested:!1,computedLabelWidth:""}},methods:{validate:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:m.noop;this.validateDisabled=!1;var n=this.getFilteredRule(e);if((!n||0===n.length)&&void 0===this.required)return i(),!0;this.validateState="validating";var r={};n&&n.length>0&&n.forEach((function(e){delete e.trigger})),r[this.prop]=n;var s=new ps.a(r),a={};a[this.prop]=this.fieldValue,s.validate(a,{firstFields:!0},(function(e,n){t.validateState=e?"error":"success",t.validateMessage=e?e[0].message:"",i(t.validateMessage,n),t.elForm&&t.elForm.$emit("validate",t.prop,!e,t.validateMessage||null)}))},clearValidate:function(){this.validateState="",this.validateMessage="",this.validateDisabled=!1},resetField:function(){var e=this;this.validateState="",this.validateMessage="";var t=this.form.model,i=this.fieldValue,n=this.prop;-1!==n.indexOf(":")&&(n=n.replace(/:/,"."));var r=Object(m.getPropByPath)(t,n,!0);this.validateDisabled=!0,Array.isArray(i)?r.o[r.k]=[].concat(this.initialValue):r.o[r.k]=this.initialValue,this.$nextTick((function(){e.validateDisabled=!1})),this.broadcast("ElTimeSelect","fieldReset",this.initialValue)},getRules:function(){var e=this.form.rules,t=this.rules,i=void 0!==this.required?{required:!!this.required}:[],n=Object(m.getPropByPath)(e,this.prop||"");return e=e?n.o[this.prop||""]||n.v:[],[].concat(t||e||[]).concat(i)},getFilteredRule:function(e){return this.getRules().filter((function(t){return!t.trigger||""===e||(Array.isArray(t.trigger)?t.trigger.indexOf(e)>-1:t.trigger===e)})).map((function(e){return Be()({},e)}))},onFieldBlur:function(){this.validate("blur")},onFieldChange:function(){this.validateDisabled?this.validateDisabled=!1:this.validate("change")},updateComputedLabelWidth:function(e){this.computedLabelWidth=e?e+"px":""},addValidateEvents:function(){(this.getRules().length||void 0!==this.required)&&(this.$on("el.form.blur",this.onFieldBlur),this.$on("el.form.change",this.onFieldChange))},removeValidateEvents:function(){this.$off()}},mounted:function(){if(this.prop){this.dispatch("ElForm","el.form.addField",[this]);var e=this.fieldValue;Array.isArray(e)&&(e=[].concat(e)),Object.defineProperty(this,"initialValue",{value:e}),this.addValidateEvents()}},beforeDestroy:function(){this.dispatch("ElForm","el.form.removeField",[this])}},ds,[],!1,null,null,null);vs.options.__file="packages/form/src/form-item.vue";var gs=vs.exports;gs.install=function(e){e.component(gs.name,gs)};var _s=gs,bs=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-tabs__active-bar",class:"is-"+this.rootTabs.tabPosition,style:this.barStyle})};bs._withStripped=!0;var ys=r({name:"TabBar",props:{tabs:Array},inject:["rootTabs"],computed:{barStyle:{get:function(){var e=this,t={},i=0,n=0,r=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height",s="width"===r?"x":"y",a=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,(function(e){return e.toUpperCase()}))};this.tabs.every((function(t,s){var o=Object(m.arrayFind)(e.$parent.$refs.tabs||[],(function(e){return e.id.replace("tab-","")===t.paneName}));if(!o)return!1;if(t.active){n=o["client"+a(r)];var l=window.getComputedStyle(o);return"width"===r&&e.tabs.length>1&&(n-=parseFloat(l.paddingLeft)+parseFloat(l.paddingRight)),"width"===r&&(i+=parseFloat(l.paddingLeft)),!1}return i+=o["client"+a(r)],!0}));var o="translate"+a(s)+"("+i+"px)";return t[r]=n+"px",t.transform=o,t.msTransform=o,t.webkitTransform=o,t}}}},bs,[],!1,null,null,null);ys.options.__file="packages/tabs/src/tab-bar.vue";var xs=ys.exports;function ks(){}var ws=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,(function(e){return e.toUpperCase()}))},Cs=r({name:"TabNav",components:{TabBar:xs},inject:["rootTabs"],props:{panes:Array,currentName:String,editable:Boolean,onTabClick:{type:Function,default:ks},onTabRemove:{type:Function,default:ks},type:String,stretch:Boolean},data:function(){return{scrollable:!1,navOffset:0,isFocus:!1,focusable:!0}},computed:{navStyle:function(){return{transform:"translate"+(-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"X":"Y")+"(-"+this.navOffset+"px)"}},sizeName:function(){return-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height"}},methods:{scrollPrev:function(){var e=this.$refs.navScroll["offset"+ws(this.sizeName)],t=this.navOffset;if(t){var i=t>e?t-e:0;this.navOffset=i}},scrollNext:function(){var e=this.$refs.nav["offset"+ws(this.sizeName)],t=this.$refs.navScroll["offset"+ws(this.sizeName)],i=this.navOffset;if(!(e-i<=t)){var n=e-i>2*t?i+t:e-t;this.navOffset=n}},scrollToActiveTab:function(){if(this.scrollable){var e=this.$refs.nav,t=this.$el.querySelector(".is-active");if(t){var i=this.$refs.navScroll,n=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition),r=t.getBoundingClientRect(),s=i.getBoundingClientRect(),a=n?e.offsetWidth-s.width:e.offsetHeight-s.height,o=this.navOffset,l=o;n?(r.lefts.right&&(l=o+r.right-s.right)):(r.tops.bottom&&(l=o+(r.bottom-s.bottom))),l=Math.max(l,0),this.navOffset=Math.min(l,a)}}},update:function(){if(this.$refs.nav){var e=this.sizeName,t=this.$refs.nav["offset"+ws(e)],i=this.$refs.navScroll["offset"+ws(e)],n=this.navOffset;if(i0&&(this.navOffset=0)}},changeTab:function(e){var t=e.keyCode,i=void 0,n=void 0,r=void 0;-1!==[37,38,39,40].indexOf(t)&&(r=e.currentTarget.querySelectorAll("[role=tab]"),n=Array.prototype.indexOf.call(r,e.target),r[i=37===t||38===t?0===n?r.length-1:n-1:n0&&void 0!==arguments[0]&&arguments[0];if(this.$slots.default){var i=this.$slots.default.filter((function(e){return e.tag&&e.componentOptions&&"ElTabPane"===e.componentOptions.Ctor.options.name})),n=i.map((function(e){return e.componentInstance})),r=!(n.length===this.panes.length&&n.every((function(t,i){return t===e.panes[i]})));(t||r)&&(this.panes=n)}else 0!==this.panes.length&&(this.panes=[])},handleTabClick:function(e,t,i){e.disabled||(this.setCurrentName(t),this.$emit("tab-click",e,i))},handleTabRemove:function(e,t){e.disabled||(t.stopPropagation(),this.$emit("edit",e.name,"remove"),this.$emit("tab-remove",e.name))},handleTabAdd:function(){this.$emit("edit",null,"add"),this.$emit("tab-add")},setCurrentName:function(e){var t=this,i=function(){t.currentName=e,t.$emit("input",e)};if(this.currentName!==e&&this.beforeLeave){var n=this.beforeLeave(e,this.currentName);n&&n.then?n.then((function(){i(),t.$refs.nav&&t.$refs.nav.removeFocus()}),(function(){})):!1!==n&&i()}else i()}},render:function(e){var t,i=this.type,n=this.handleTabClick,r=this.handleTabRemove,s=this.handleTabAdd,a=this.currentName,o=this.panes,l=this.editable,u=this.addable,c=this.tabPosition,d=this.stretch,h=l||u?e("span",{class:"el-tabs__new-tab",on:{click:s,keydown:function(e){13===e.keyCode&&s()}},attrs:{tabindex:"0"}},[e("i",{class:"el-icon-plus"})]):null,p=e("div",{class:["el-tabs__header","is-"+c]},[h,e("tab-nav",{props:{currentName:a,onTabClick:n,onTabRemove:r,editable:l,type:i,panes:o,stretch:d},ref:"nav"})]),f=e("div",{class:"el-tabs__content"},[this.$slots.default]);return e("div",{class:(t={"el-tabs":!0,"el-tabs--card":"card"===i},t["el-tabs--"+c]=!0,t["el-tabs--border-card"]="border-card"===i,t)},["bottom"!==c?[p,f]:[f,p]])},created:function(){this.currentName||this.setCurrentName("0"),this.$on("tab-nav-update",this.calcPaneInstances.bind(null,!0))},mounted:function(){this.calcPaneInstances()},updated:function(){this.calcPaneInstances()}},void 0,void 0,!1,null,null,null);Ss.options.__file="packages/tabs/src/tabs.vue";var Os=Ss.exports;Os.install=function(e){e.component(Os.name,Os)};var Ds=Os,Es=function(){var e=this,t=e.$createElement,i=e._self._c||t;return!e.lazy||e.loaded||e.active?i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],staticClass:"el-tab-pane",attrs:{role:"tabpanel","aria-hidden":!e.active,id:"pane-"+e.paneName,"aria-labelledby":"tab-"+e.paneName}},[e._t("default")],2):e._e()};Es._withStripped=!0;var Ts=r({name:"ElTabPane",componentName:"ElTabPane",props:{label:String,labelContent:Function,name:String,closable:Boolean,disabled:Boolean,lazy:Boolean},data:function(){return{index:null,loaded:!1}},computed:{isClosable:function(){return this.closable||this.$parent.closable},active:function(){var e=this.$parent.currentName===(this.name||this.index);return e&&(this.loaded=!0),e},paneName:function(){return this.name||this.index}},updated:function(){this.$parent.$emit("tab-nav-update")}},Es,[],!1,null,null,null);Ts.options.__file="packages/tabs/src/tab-pane.vue";var $s=Ts.exports;$s.install=function(e){e.component($s.name,$s)};var Ps=$s,js=r({name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return-1!==["dark","light","plain"].indexOf(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,i=this.tagSize,n=this.hit,r=this.effect,s=e("span",{class:["el-tag",t?"el-tag--"+t:"",i?"el-tag--"+i:"",r?"el-tag--"+r:"",n&&"is-hit"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?s:e("transition",{attrs:{name:"el-zoom-in-center"}},[s])}},void 0,void 0,!1,null,null,null);js.options.__file="packages/tag/src/tag.vue";var Ms=js.exports;Ms.install=function(e){e.component(Ms.name,Ms)};var Is=Ms,As=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-tree",class:{"el-tree--highlight-current":e.highlightCurrent,"is-dragging":!!e.dragState.draggingNode,"is-drop-not-allow":!e.dragState.allowDrop,"is-drop-inner":"inner"===e.dragState.dropType},attrs:{role:"tree"}},[e._l(e.root.childNodes,(function(t){return i("el-tree-node",{key:e.getNodeKey(t),attrs:{node:t,props:e.props,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent},on:{"node-expand":e.handleNodeExpand}})})),e.isEmpty?i("div",{staticClass:"el-tree__empty-block"},[i("span",{staticClass:"el-tree__empty-text"},[e._v(e._s(e.emptyText))])]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.dragState.showDropIndicator,expression:"dragState.showDropIndicator"}],ref:"dropIndicator",staticClass:"el-tree__drop-indicator"})],2)};As._withStripped=!0;var Ns="$treeNodeId",Ls=function(e,t){t&&!t[Ns]&&Object.defineProperty(t,Ns,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},Fs=function(e,t){return e?t[e]:t[Ns]},Vs=function(){function e(e,t){for(var i=0;i0&&n.lazy&&n.defaultExpandAll&&this.expand(),Array.isArray(this.data)||Ls(this,this.data),this.data){var a=n.defaultExpandedKeys,o=n.key;o&&a&&-1!==a.indexOf(this.key)&&this.expand(null,n.autoExpandParent),o&&void 0!==n.currentNodeKey&&this.key===n.currentNodeKey&&(n.currentNode=this,n.currentNode.isCurrent=!0),n.lazy&&n._initDefaultCheckedNode(this),this.updateLeafState()}}return e.prototype.setData=function(e){Array.isArray(e)||Ls(this,e),this.data=e,this.childNodes=[];for(var t=void 0,i=0,n=(t=0===this.level&&this.data instanceof Array?this.data:Bs(this,"children")||[]).length;i1&&void 0!==arguments[1])||arguments[1],i=function i(n){for(var r=n.childNodes||[],s=!1,a=0,o=r.length;a-1&&t.splice(i,1);var n=this.childNodes.indexOf(e);n>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(n,1)),this.updateLeafState()},e.prototype.removeChildByData=function(e){for(var t=null,i=0;i0;)n.expanded=!0,n=n.parent;i.expanded=!0,e&&e()};this.shouldLoadData()?this.loadData((function(e){e instanceof Array&&(i.checked?i.setChecked(!0,!0):i.store.checkStrictly||Rs(i),n())})):n()},e.prototype.doCreateChildren=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.forEach((function(e){t.insertChild(Be()({data:e},i),void 0,!0)}))},e.prototype.collapse=function(){this.expanded=!1},e.prototype.shouldLoadData=function(){return!0===this.store.lazy&&this.store.load&&!this.loaded},e.prototype.updateLeafState=function(){if(!0!==this.store.lazy||!0===this.loaded||void 0===this.isLeafByUser){var e=this.childNodes;!this.store.lazy||!0===this.store.lazy&&!0===this.loaded?this.isLeaf=!e||0===e.length:this.isLeaf=!1}else this.isLeaf=this.isLeafByUser},e.prototype.setChecked=function(e,t,i,n){var r=this;if(this.indeterminate="half"===e,this.checked=!0===e,!this.store.checkStrictly){if(!this.shouldLoadData()||this.store.checkDescendants){var s=zs(this.childNodes),a=s.all,o=s.allWithoutDisable;this.isLeaf||a||!o||(this.checked=!1,e=!1);var l=function(){if(t){for(var i=r.childNodes,s=0,a=i.length;s0&&void 0!==arguments[0]&&arguments[0];if(0===this.level)return this.data;var t=this.data;if(!t)return null;var i=this.store.props,n="children";return i&&(n=i.children||"children"),void 0===t[n]&&(t[n]=null),e&&!t[n]&&(t[n]=[]),t[n]},e.prototype.updateChildren=function(){var e=this,t=this.getChildren()||[],i=this.childNodes.map((function(e){return e.data})),n={},r=[];t.forEach((function(e,t){var s=e[Ns];!!s&&Object(m.arrayFindIndex)(i,(function(e){return e[Ns]===s}))>=0?n[s]={index:t,data:e}:r.push({index:t,data:e})})),this.store.lazy||i.forEach((function(t){n[t[Ns]]||e.removeChildByData(t)})),r.forEach((function(t){var i=t.index,n=t.data;e.insertChild({data:n},i)})),this.updateLeafState()},e.prototype.loadData=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(i).length)e&&e.call(this);else{this.loading=!0;var n=function(n){t.loaded=!0,t.loading=!1,t.childNodes=[],t.doCreateChildren(n,i),t.updateLeafState(),e&&e.call(t,n)};this.store.load(this,n)}},Vs(e,[{key:"label",get:function(){return Bs(this,"label")}},{key:"key",get:function(){var e=this.store.key;return this.data?this.data[e]:null}},{key:"disabled",get:function(){return Bs(this,"disabled")}},{key:"nextSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return e.childNodes[t+1]}return null}},{key:"previousSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return t>0?e.childNodes[t-1]:null}return null}}]),e}(),qs="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var Us=function(){function e(t){var i=this;for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.currentNode=null,this.currentNodeKey=null,t)t.hasOwnProperty(n)&&(this[n]=t[n]);(this.nodesMap={},this.root=new Ws({data:this.data,store:this}),this.lazy&&this.load)?(0,this.load)(this.root,(function(e){i.root.doCreateChildren(e),i._initDefaultCheckedNodes()})):this._initDefaultCheckedNodes()}return e.prototype.filter=function(e){var t=this.filterNodeMethod,i=this.lazy;!function n(r){var s=r.root?r.root.childNodes:r.childNodes;if(s.forEach((function(i){i.visible=t.call(i,e,i.data,i),n(i)})),!r.visible&&s.length){var a;a=!s.some((function(e){return e.visible})),r.root?r.root.visible=!1===a:r.visible=!1===a}e&&(!r.visible||r.isLeaf||i||r.expand())}(this)},e.prototype.setData=function(e){e!==this.root.data?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()},e.prototype.getNode=function(e){if(e instanceof Ws)return e;var t="object"!==(void 0===e?"undefined":qs(e))?e:Fs(this.key,e);return this.nodesMap[t]||null},e.prototype.insertBefore=function(e,t){var i=this.getNode(t);i.parent.insertBefore({data:e},i)},e.prototype.insertAfter=function(e,t){var i=this.getNode(t);i.parent.insertAfter({data:e},i)},e.prototype.remove=function(e){var t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))},e.prototype.append=function(e,t){var i=t?this.getNode(t):this.root;i&&i.insertChild({data:e})},e.prototype._initDefaultCheckedNodes=function(){var e=this,t=this.defaultCheckedKeys||[],i=this.nodesMap;t.forEach((function(t){var n=i[t];n&&n.setChecked(!0,!e.checkStrictly)}))},e.prototype._initDefaultCheckedNode=function(e){-1!==(this.defaultCheckedKeys||[]).indexOf(e.key)&&e.setChecked(!0,!this.checkStrictly)},e.prototype.setDefaultCheckedKey=function(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())},e.prototype.registerNode=function(e){this.key&&e&&e.data&&(void 0!==e.key&&(this.nodesMap[e.key]=e))},e.prototype.deregisterNode=function(e){var t=this;this.key&&e&&e.data&&(e.childNodes.forEach((function(e){t.deregisterNode(e)})),delete this.nodesMap[e.key])},e.prototype.getCheckedNodes=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[],n=function n(r){(r.root?r.root.childNodes:r.childNodes).forEach((function(r){(r.checked||t&&r.indeterminate)&&(!e||e&&r.isLeaf)&&i.push(r.data),n(r)}))};return n(this),i},e.prototype.getCheckedKeys=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getCheckedNodes(t).map((function(t){return(t||{})[e.key]}))},e.prototype.getHalfCheckedNodes=function(){var e=[];return function t(i){(i.root?i.root.childNodes:i.childNodes).forEach((function(i){i.indeterminate&&e.push(i.data),t(i)}))}(this),e},e.prototype.getHalfCheckedKeys=function(){var e=this;return this.getHalfCheckedNodes().map((function(t){return(t||{})[e.key]}))},e.prototype._getAllNodes=function(){var e=[],t=this.nodesMap;for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.prototype.updateChildren=function(e,t){var i=this.nodesMap[e];if(i){for(var n=i.childNodes,r=n.length-1;r>=0;r--){var s=n[r];this.remove(s.data)}for(var a=0,o=t.length;a1&&void 0!==arguments[1]&&arguments[1],i=arguments[2],n=this._getAllNodes().sort((function(e,t){return t.level-e.level})),r=Object.create(null),s=Object.keys(i);n.forEach((function(e){return e.setChecked(!1,!1)}));for(var a=0,o=n.length;a-1;if(c){for(var d=l.parent;d&&d.level>0;)r[d.data[e]]=!0,d=d.parent;l.isLeaf||this.checkStrictly?l.setChecked(!0,!1):(l.setChecked(!0,!0),t&&function(){l.setChecked(!1,!1);!function e(t){t.childNodes.forEach((function(t){t.isLeaf||t.setChecked(!1,!1),e(t)}))}(l)}())}else l.checked&&!r[u]&&l.setChecked(!1,!1)}},e.prototype.setCheckedNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.key,n={};e.forEach((function(e){n[(e||{})[i]]=!0})),this._setCheckedKeys(i,t,n)},e.prototype.setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.defaultCheckedKeys=e;var i=this.key,n={};e.forEach((function(e){n[e]=!0})),this._setCheckedKeys(i,t,n)},e.prototype.setDefaultExpandedKeys=function(e){var t=this;e=e||[],this.defaultExpandedKeys=e,e.forEach((function(e){var i=t.getNode(e);i&&i.expand(null,t.autoExpandParent)}))},e.prototype.setChecked=function(e,t,i){var n=this.getNode(e);n&&n.setChecked(!!t,i)},e.prototype.getCurrentNode=function(){return this.currentNode},e.prototype.setCurrentNode=function(e){var t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0},e.prototype.setUserCurrentNode=function(e){var t=e[this.key],i=this.nodesMap[t];this.setCurrentNode(i)},e.prototype.setCurrentNodeKey=function(e){if(null==e)return this.currentNode&&(this.currentNode.isCurrent=!1),void(this.currentNode=null);var t=this.getNode(e);t&&this.setCurrentNode(t)},e}(),Gs=function(){var e=this,t=this,i=t.$createElement,n=t._self._c||i;return n("div",{directives:[{name:"show",rawName:"v-show",value:t.node.visible,expression:"node.visible"}],ref:"node",staticClass:"el-tree-node",class:{"is-expanded":t.expanded,"is-current":t.node.isCurrent,"is-hidden":!t.node.visible,"is-focusable":!t.node.disabled,"is-checked":!t.node.disabled&&t.node.checked},attrs:{role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.node.disabled,"aria-checked":t.node.checked,draggable:t.tree.draggable},on:{click:function(e){return e.stopPropagation(),t.handleClick(e)},contextmenu:function(t){return e.handleContextMenu(t)},dragstart:function(e){return e.stopPropagation(),t.handleDragStart(e)},dragover:function(e){return e.stopPropagation(),t.handleDragOver(e)},dragend:function(e){return e.stopPropagation(),t.handleDragEnd(e)},drop:function(e){return e.stopPropagation(),t.handleDrop(e)}}},[n("div",{staticClass:"el-tree-node__content",style:{"padding-left":(t.node.level-1)*t.tree.indent+"px"}},[n("span",{class:[{"is-leaf":t.node.isLeaf,expanded:!t.node.isLeaf&&t.expanded},"el-tree-node__expand-icon",t.tree.iconClass?t.tree.iconClass:"el-icon-caret-right"],on:{click:function(e){return e.stopPropagation(),t.handleExpandIconClick(e)}}}),t.showCheckbox?n("el-checkbox",{attrs:{indeterminate:t.node.indeterminate,disabled:!!t.node.disabled},on:{change:t.handleCheckChange},nativeOn:{click:function(e){e.stopPropagation()}},model:{value:t.node.checked,callback:function(e){t.$set(t.node,"checked",e)},expression:"node.checked"}}):t._e(),t.node.loading?n("span",{staticClass:"el-tree-node__loading-icon el-icon-loading"}):t._e(),n("node-content",{attrs:{node:t.node}})],1),n("el-collapse-transition",[!t.renderAfterExpand||t.childNodeRendered?n("div",{directives:[{name:"show",rawName:"v-show",value:t.expanded,expression:"expanded"}],staticClass:"el-tree-node__children",attrs:{role:"group","aria-expanded":t.expanded}},t._l(t.node.childNodes,(function(e){return n("el-tree-node",{key:t.getNodeKey(e),attrs:{"render-content":t.renderContent,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,node:e},on:{"node-expand":t.handleChildNodeExpand}})})),1):t._e()])],1)};Gs._withStripped=!0;var Ys=r({name:"ElTreeNode",componentName:"ElTreeNode",mixins:[C.a],props:{node:{default:function(){return{}}},props:{},renderContent:Function,renderAfterExpand:{type:Boolean,default:!0},showCheckbox:{type:Boolean,default:!1}},components:{ElCollapseTransition:be.a,ElCheckbox:ri.a,NodeContent:{props:{node:{required:!0}},render:function(e){var t=this.$parent,i=t.tree,n=this.node,r=n.data,s=n.store;return t.renderContent?t.renderContent.call(t._renderProxy,e,{_self:i.$vnode.context,node:n,data:r,store:s}):i.$scopedSlots.default?i.$scopedSlots.default({node:n,data:r}):e("span",{class:"el-tree-node__label"},[n.label])}}},data:function(){return{tree:null,expanded:!1,childNodeRendered:!1,oldChecked:null,oldIndeterminate:null}},watch:{"node.indeterminate":function(e){this.handleSelectChange(this.node.checked,e)},"node.checked":function(e){this.handleSelectChange(e,this.node.indeterminate)},"node.expanded":function(e){var t=this;this.$nextTick((function(){return t.expanded=e})),e&&(this.childNodeRendered=!0)}},methods:{getNodeKey:function(e){return Fs(this.tree.nodeKey,e.data)},handleSelectChange:function(e,t){this.oldChecked!==e&&this.oldIndeterminate!==t&&this.tree.$emit("check-change",this.node.data,e,t),this.oldChecked=e,this.indeterminate=t},handleClick:function(){var e=this.tree.store;e.setCurrentNode(this.node),this.tree.$emit("current-change",e.currentNode?e.currentNode.data:null,e.currentNode),this.tree.currentNode=this,this.tree.expandOnClickNode&&this.handleExpandIconClick(),this.tree.checkOnClickNode&&!this.node.disabled&&this.handleCheckChange(null,{target:{checked:!this.node.checked}}),this.tree.$emit("node-click",this.node.data,this.node,this)},handleContextMenu:function(e){this.tree._events["node-contextmenu"]&&this.tree._events["node-contextmenu"].length>0&&(e.stopPropagation(),e.preventDefault()),this.tree.$emit("node-contextmenu",e,this.node.data,this.node,this)},handleExpandIconClick:function(){this.node.isLeaf||(this.expanded?(this.tree.$emit("node-collapse",this.node.data,this.node,this),this.node.collapse()):(this.node.expand(),this.$emit("node-expand",this.node.data,this.node,this)))},handleCheckChange:function(e,t){var i=this;this.node.setChecked(t.target.checked,!this.tree.checkStrictly),this.$nextTick((function(){var e=i.tree.store;i.tree.$emit("check",i.node.data,{checkedNodes:e.getCheckedNodes(),checkedKeys:e.getCheckedKeys(),halfCheckedNodes:e.getHalfCheckedNodes(),halfCheckedKeys:e.getHalfCheckedKeys()})}))},handleChildNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.tree.$emit("node-expand",e,t,i)},handleDragStart:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-start",e,this)},handleDragOver:function(e){this.tree.draggable&&(this.tree.$emit("tree-node-drag-over",e,this),e.preventDefault())},handleDrop:function(e){e.preventDefault()},handleDragEnd:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-end",e,this)}},created:function(){var e=this,t=this.$parent;t.isTree?this.tree=t:this.tree=t.tree;var i=this.tree;i||console.warn("Can not find node's tree.");var n=(i.props||{}).children||"children";this.$watch("node.data."+n,(function(){e.node.updateChildren()})),this.node.expanded&&(this.expanded=!0,this.childNodeRendered=!0),this.tree.accordion&&this.$on("tree-node-expand",(function(t){e.node!==t&&e.node.collapse()}))}},Gs,[],!1,null,null,null);Ys.options.__file="packages/tree/src/tree-node.vue";var Ks=Ys.exports,Xs=r({name:"ElTree",mixins:[C.a],components:{ElTreeNode:Ks},data:function(){return{store:null,root:null,currentNode:null,treeItems:null,checkboxItems:[],dragState:{showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0}}},props:{data:{type:Array},emptyText:{type:String,default:function(){return Object(Ir.t)("el.tree.emptyText")}},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{default:function(){return{children:"children",label:"label",disabled:"disabled"}}},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},iconClass:String},computed:{children:{set:function(e){this.data=e},get:function(){return this.data}},treeItemArray:function(){return Array.prototype.slice.call(this.treeItems)},isEmpty:function(){var e=this.root.childNodes;return!e||0===e.length||e.every((function(e){return!e.visible}))}},watch:{defaultCheckedKeys:function(e){this.store.setDefaultCheckedKey(e)},defaultExpandedKeys:function(e){this.store.defaultExpandedKeys=e,this.store.setDefaultExpandedKeys(e)},data:function(e){this.store.setData(e)},checkboxItems:function(e){Array.prototype.forEach.call(e,(function(e){e.setAttribute("tabindex",-1)}))},checkStrictly:function(e){this.store.checkStrictly=e}},methods:{filter:function(e){if(!this.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");this.store.filter(e)},getNodeKey:function(e){return Fs(this.nodeKey,e.data)},getNodePath:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");var t=this.store.getNode(e);if(!t)return[];for(var i=[t.data],n=t.parent;n&&n!==this.root;)i.push(n.data),n=n.parent;return i.reverse()},getCheckedNodes:function(e,t){return this.store.getCheckedNodes(e,t)},getCheckedKeys:function(e){return this.store.getCheckedKeys(e)},getCurrentNode:function(){var e=this.store.getCurrentNode();return e?e.data:null},getCurrentKey:function(){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");var e=this.getCurrentNode();return e?e[this.nodeKey]:null},setCheckedNodes:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");this.store.setCheckedNodes(e,t)},setCheckedKeys:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");this.store.setCheckedKeys(e,t)},setChecked:function(e,t,i){this.store.setChecked(e,t,i)},getHalfCheckedNodes:function(){return this.store.getHalfCheckedNodes()},getHalfCheckedKeys:function(){return this.store.getHalfCheckedKeys()},setCurrentNode:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");this.store.setUserCurrentNode(e)},setCurrentKey:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");this.store.setCurrentNodeKey(e)},getNode:function(e){return this.store.getNode(e)},remove:function(e){this.store.remove(e)},append:function(e,t){this.store.append(e,t)},insertBefore:function(e,t){this.store.insertBefore(e,t)},insertAfter:function(e,t){this.store.insertAfter(e,t)},handleNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.$emit("node-expand",e,t,i)},updateKeyChildren:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");this.store.updateChildren(e,t)},initTabIndex:function(){this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]");var e=this.$el.querySelectorAll(".is-checked[role=treeitem]");e.length?e[0].setAttribute("tabindex",0):this.treeItems[0]&&this.treeItems[0].setAttribute("tabindex",0)},handleKeydown:function(e){var t=e.target;if(-1!==t.className.indexOf("el-tree-node")){var i=e.keyCode;this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]");var n=this.treeItemArray.indexOf(t),r=void 0;[38,40].indexOf(i)>-1&&(e.preventDefault(),r=38===i?0!==n?n-1:0:n-1&&(e.preventDefault(),t.click());var s=t.querySelector('[type="checkbox"]');[13,32].indexOf(i)>-1&&s&&(e.preventDefault(),s.click())}}},created:function(){var e=this;this.isTree=!0,this.store=new Us({key:this.nodeKey,data:this.data,lazy:this.lazy,props:this.props,load:this.load,currentNodeKey:this.currentNodeKey,checkStrictly:this.checkStrictly,checkDescendants:this.checkDescendants,defaultCheckedKeys:this.defaultCheckedKeys,defaultExpandedKeys:this.defaultExpandedKeys,autoExpandParent:this.autoExpandParent,defaultExpandAll:this.defaultExpandAll,filterNodeMethod:this.filterNodeMethod}),this.root=this.store.root;var t=this.dragState;this.$on("tree-node-drag-start",(function(i,n){if("function"==typeof e.allowDrag&&!e.allowDrag(n.node))return i.preventDefault(),!1;i.dataTransfer.effectAllowed="move";try{i.dataTransfer.setData("text/plain","")}catch(e){}t.draggingNode=n,e.$emit("node-drag-start",n.node,i)})),this.$on("tree-node-drag-over",(function(i,n){var r=function(e,t){for(var i=e;i&&"BODY"!==i.tagName;){if(i.__vue__&&i.__vue__.$options.name===t)return i.__vue__;i=i.parentNode}return null}(i.target,"ElTreeNode"),s=t.dropNode;s&&s!==r&&Object(fe.removeClass)(s.$el,"is-drop-inner");var a=t.draggingNode;if(a&&r){var o=!0,l=!0,u=!0,c=!0;"function"==typeof e.allowDrop&&(o=e.allowDrop(a.node,r.node,"prev"),c=l=e.allowDrop(a.node,r.node,"inner"),u=e.allowDrop(a.node,r.node,"next")),i.dataTransfer.dropEffect=l?"move":"none",(o||l||u)&&s!==r&&(s&&e.$emit("node-drag-leave",a.node,s.node,i),e.$emit("node-drag-enter",a.node,r.node,i)),(o||l||u)&&(t.dropNode=r),r.node.nextSibling===a.node&&(u=!1),r.node.previousSibling===a.node&&(o=!1),r.node.contains(a.node,!1)&&(l=!1),(a.node===r.node||a.node.contains(r.node))&&(o=!1,l=!1,u=!1);var d=r.$el.getBoundingClientRect(),h=e.$el.getBoundingClientRect(),p=void 0,f=o?l?.25:u?.45:1:-1,m=u?l?.75:o?.55:0:1,v=-9999,g=i.clientY-d.top;p=gd.height*m?"after":l?"inner":"none";var _=r.$el.querySelector(".el-tree-node__expand-icon").getBoundingClientRect(),b=e.$refs.dropIndicator;"before"===p?v=_.top-h.top:"after"===p&&(v=_.bottom-h.top),b.style.top=v+"px",b.style.left=_.right-h.left+"px","inner"===p?Object(fe.addClass)(r.$el,"is-drop-inner"):Object(fe.removeClass)(r.$el,"is-drop-inner"),t.showDropIndicator="before"===p||"after"===p,t.allowDrop=t.showDropIndicator||c,t.dropType=p,e.$emit("node-drag-over",a.node,r.node,i)}})),this.$on("tree-node-drag-end",(function(i){var n=t.draggingNode,r=t.dropType,s=t.dropNode;if(i.preventDefault(),i.dataTransfer.dropEffect="move",n&&s){var a={data:n.node.data};"none"!==r&&n.node.remove(),"before"===r?s.node.parent.insertBefore(a,s.node):"after"===r?s.node.parent.insertAfter(a,s.node):"inner"===r&&s.node.insertChild(a),"none"!==r&&e.store.registerNode(a),Object(fe.removeClass)(s.$el,"is-drop-inner"),e.$emit("node-drag-end",n.node,s.node,r,i),"none"!==r&&e.$emit("node-drop",n.node,s.node,r,i)}n&&!s&&e.$emit("node-drag-end",n.node,null,r,i),t.showDropIndicator=!1,t.draggingNode=null,t.dropNode=null,t.allowDrop=!0}))},mounted:function(){this.initTabIndex(),this.$el.addEventListener("keydown",this.handleKeydown)},updated:function(){this.treeItems=this.$el.querySelectorAll("[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]")}},As,[],!1,null,null,null);Xs.options.__file="packages/tree/src/tree.vue";var Zs=Xs.exports;Zs.install=function(e){e.component(Zs.name,Zs)};var Qs=Zs,Js=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-alert-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-alert",class:[e.typeClass,e.center?"is-center":"","is-"+e.effect],attrs:{role:"alert"}},[e.showIcon?i("i",{staticClass:"el-alert__icon",class:[e.iconClass,e.isBigIcon]}):e._e(),i("div",{staticClass:"el-alert__content"},[e.title||e.$slots.title?i("span",{staticClass:"el-alert__title",class:[e.isBoldTitle]},[e._t("title",[e._v(e._s(e.title))])],2):e._e(),e.$slots.default&&!e.description?i("p",{staticClass:"el-alert__description"},[e._t("default")],2):e._e(),e.description&&!e.$slots.default?i("p",{staticClass:"el-alert__description"},[e._v(e._s(e.description))]):e._e(),i("i",{directives:[{name:"show",rawName:"v-show",value:e.closable,expression:"closable"}],staticClass:"el-alert__closebtn",class:{"is-customed":""!==e.closeText,"el-icon-close":""===e.closeText},on:{click:function(t){e.close()}}},[e._v(e._s(e.closeText))])])])])};Js._withStripped=!0;var ea={success:"el-icon-success",warning:"el-icon-warning",error:"el-icon-error"},ta=r({name:"ElAlert",props:{title:{type:String,default:""},description:{type:String,default:""},type:{type:String,default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,default:"light",validator:function(e){return-1!==["light","dark"].indexOf(e)}}},data:function(){return{visible:!0}},methods:{close:function(){this.visible=!1,this.$emit("close")}},computed:{typeClass:function(){return"el-alert--"+this.type},iconClass:function(){return ea[this.type]||"el-icon-info"},isBigIcon:function(){return this.description||this.$slots.default?"is-big":""},isBoldTitle:function(){return this.description||this.$slots.default?"is-bold":""}}},Js,[],!1,null,null,null);ta.options.__file="packages/alert/src/main.vue";var ia=ta.exports;ia.install=function(e){e.component(ia.name,ia)};var na=ia,ra=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-notification-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-notification",e.customClass,e.horizontalClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:function(t){e.clearTimer()},mouseleave:function(t){e.startTimer()},click:e.click}},[e.type||e.iconClass?i("i",{staticClass:"el-notification__icon",class:[e.typeClass,e.iconClass]}):e._e(),i("div",{staticClass:"el-notification__group",class:{"is-with-icon":e.typeClass||e.iconClass}},[i("h2",{staticClass:"el-notification__title",domProps:{textContent:e._s(e.title)}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.message,expression:"message"}],staticClass:"el-notification__content"},[e._t("default",[e.dangerouslyUseHTMLString?i("p",{domProps:{innerHTML:e._s(e.message)}}):i("p",[e._v(e._s(e.message))])])],2),e.showClose?i("div",{staticClass:"el-notification__closeBtn el-icon-close",on:{click:function(t){return t.stopPropagation(),e.close(t)}}}):e._e()])])])};ra._withStripped=!0;var sa={success:"success",info:"info",warning:"warning",error:"error"},aa=r({data:function(){return{visible:!1,title:"",message:"",duration:4500,type:"",showClose:!0,customClass:"",iconClass:"",onClose:null,onClick:null,closed:!1,verticalOffset:0,timer:null,dangerouslyUseHTMLString:!1,position:"top-right"}},computed:{typeClass:function(){return this.type&&sa[this.type]?"el-icon-"+sa[this.type]:""},horizontalClass:function(){return this.position.indexOf("right")>-1?"right":"left"},verticalProperty:function(){return/^top-/.test(this.position)?"top":"bottom"},positionStyle:function(){var e;return(e={})[this.verticalProperty]=this.verticalOffset+"px",e}},watch:{closed:function(e){e&&(this.visible=!1,this.$el.addEventListener("transitionend",this.destroyElement))}},methods:{destroyElement:function(){this.$el.removeEventListener("transitionend",this.destroyElement),this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},click:function(){"function"==typeof this.onClick&&this.onClick()},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose()},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout((function(){e.closed||e.close()}),this.duration))},keydown:function(e){46===e.keyCode||8===e.keyCode?this.clearTimer():27===e.keyCode?this.closed||this.close():this.startTimer()}},mounted:function(){var e=this;this.duration>0&&(this.timer=setTimeout((function(){e.closed||e.close()}),this.duration)),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},ra,[],!1,null,null,null);aa.options.__file="packages/notification/src/main.vue";var oa=aa.exports,la=di.a.extend(oa),ua=void 0,ca=[],da=1,ha=function e(t){if(!di.a.prototype.$isServer){var i=(t=Be()({},t)).onClose,n="notification_"+da++,r=t.position||"top-right";t.onClose=function(){e.close(n,i)},ua=new la({data:t}),Object(Br.isVNode)(t.message)&&(ua.$slots.default=[t.message],t.message="REPLACED_BY_VNODE"),ua.id=n,ua.$mount(),document.body.appendChild(ua.$el),ua.visible=!0,ua.dom=ua.$el,ua.dom.style.zIndex=b.PopupManager.nextZIndex();var s=t.offset||0;return ca.filter((function(e){return e.position===r})).forEach((function(e){s+=e.$el.offsetHeight+16})),s+=16,ua.verticalOffset=s,ca.push(ua),ua}};["success","warning","info","error"].forEach((function(e){ha[e]=function(t){return("string"==typeof t||Object(Br.isVNode)(t))&&(t={message:t}),t.type=e,ha(t)}})),ha.close=function(e,t){var i=-1,n=ca.length,r=ca.filter((function(t,n){return t.id===e&&(i=n,!0)}))[0];if(r&&("function"==typeof t&&t(r),ca.splice(i,1),!(n<=1)))for(var s=r.position,a=r.dom.offsetHeight,o=i;o=0;e--)ca[e].close()};var pa=ha,fa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-slider",class:{"is-vertical":e.vertical,"el-slider--with-input":e.showInput},attrs:{role:"slider","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal","aria-disabled":e.sliderDisabled}},[e.showInput&&!e.range?i("el-input-number",{ref:"input",staticClass:"el-slider__input",attrs:{step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.inputSize},on:{change:e.emitChange},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}):e._e(),i("div",{ref:"slider",staticClass:"el-slider__runway",class:{"show-input":e.showInput,disabled:e.sliderDisabled},style:e.runwayStyle,on:{click:e.onSliderClick}},[i("div",{staticClass:"el-slider__bar",style:e.barStyle}),i("slider-button",{ref:"button1",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}),e.range?i("slider-button",{ref:"button2",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.secondValue,callback:function(t){e.secondValue=t},expression:"secondValue"}}):e._e(),e._l(e.stops,(function(t,n){return e.showStops?i("div",{key:n,staticClass:"el-slider__stop",style:e.getStopStyle(t)}):e._e()})),e.markList.length>0?[i("div",e._l(e.markList,(function(t,n){return i("div",{key:n,staticClass:"el-slider__stop el-slider__marks-stop",style:e.getStopStyle(t.position)})})),0),i("div",{staticClass:"el-slider__marks"},e._l(e.markList,(function(t,n){return i("slider-marker",{key:n,style:e.getStopStyle(t.position),attrs:{mark:t.mark}})})),1)]:e._e()],2)],1)};fa._withStripped=!0;var ma=i(41),va=i.n(ma),ga=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{ref:"button",staticClass:"el-slider__button-wrapper",class:{hover:e.hovering,dragging:e.dragging},style:e.wrapperStyle,attrs:{tabindex:"0"},on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave,mousedown:e.onButtonDown,touchstart:e.onButtonDown,focus:e.handleMouseEnter,blur:e.handleMouseLeave,keydown:[function(t){return!("button"in t)&&e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])||"button"in t&&0!==t.button?null:e.onLeftKeyDown(t)},function(t){return!("button"in t)&&e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])||"button"in t&&2!==t.button?null:e.onRightKeyDown(t)},function(t){return!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),e.onLeftKeyDown(t))},function(t){return!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),e.onRightKeyDown(t))}]}},[i("el-tooltip",{ref:"tooltip",attrs:{placement:"top","popper-class":e.tooltipClass,disabled:!e.showTooltip}},[i("span",{attrs:{slot:"content"},slot:"content"},[e._v(e._s(e.formatValue))]),i("div",{staticClass:"el-slider__button",class:{hover:e.hovering,dragging:e.dragging}})])],1)};ga._withStripped=!0;var _a=r({name:"ElSliderButton",components:{ElTooltip:De.a},props:{value:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:String},data:function(){return{hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:null,oldValue:this.value}},computed:{disabled:function(){return this.$parent.sliderDisabled},max:function(){return this.$parent.max},min:function(){return this.$parent.min},step:function(){return this.$parent.step},showTooltip:function(){return this.$parent.showTooltip},precision:function(){return this.$parent.precision},currentPosition:function(){return(this.value-this.min)/(this.max-this.min)*100+"%"},enableFormat:function(){return this.$parent.formatTooltip instanceof Function},formatValue:function(){return this.enableFormat&&this.$parent.formatTooltip(this.value)||this.value},wrapperStyle:function(){return this.vertical?{bottom:this.currentPosition}:{left:this.currentPosition}}},watch:{dragging:function(e){this.$parent.dragging=e}},methods:{displayTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!0)},hideTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!1)},handleMouseEnter:function(){this.hovering=!0,this.displayTooltip()},handleMouseLeave:function(){this.hovering=!1,this.hideTooltip()},onButtonDown:function(e){this.disabled||(e.preventDefault(),this.onDragStart(e),window.addEventListener("mousemove",this.onDragging),window.addEventListener("touchmove",this.onDragging),window.addEventListener("mouseup",this.onDragEnd),window.addEventListener("touchend",this.onDragEnd),window.addEventListener("contextmenu",this.onDragEnd))},onLeftKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)-this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onRightKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)+this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onDragStart:function(e){this.dragging=!0,this.isClick=!0,"touchstart"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?this.startY=e.clientY:this.startX=e.clientX,this.startPosition=parseFloat(this.currentPosition),this.newPosition=this.startPosition},onDragging:function(e){if(this.dragging){this.isClick=!1,this.displayTooltip(),this.$parent.resetSize();var t=0;"touchmove"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?(this.currentY=e.clientY,t=(this.startY-this.currentY)/this.$parent.sliderSize*100):(this.currentX=e.clientX,t=(this.currentX-this.startX)/this.$parent.sliderSize*100),this.newPosition=this.startPosition+t,this.setPosition(this.newPosition)}},onDragEnd:function(){var e=this;this.dragging&&(setTimeout((function(){e.dragging=!1,e.hideTooltip(),e.isClick||(e.setPosition(e.newPosition),e.$parent.emitChange())}),0),window.removeEventListener("mousemove",this.onDragging),window.removeEventListener("touchmove",this.onDragging),window.removeEventListener("mouseup",this.onDragEnd),window.removeEventListener("touchend",this.onDragEnd),window.removeEventListener("contextmenu",this.onDragEnd))},setPosition:function(e){var t=this;if(null!==e&&!isNaN(e)){e<0?e=0:e>100&&(e=100);var i=100/((this.max-this.min)/this.step),n=Math.round(e/i)*i*(this.max-this.min)*.01+this.min;n=parseFloat(n.toFixed(this.precision)),this.$emit("input",n),this.$nextTick((function(){t.displayTooltip(),t.$refs.tooltip&&t.$refs.tooltip.updatePopper()})),this.dragging||this.value===this.oldValue||(this.oldValue=this.value)}}}},ga,[],!1,null,null,null);_a.options.__file="packages/slider/src/button.vue";var ba=_a.exports,ya={name:"ElMarker",props:{mark:{type:[String,Object]}},render:function(){var e=arguments[0],t="string"==typeof this.mark?this.mark:this.mark.label;return e("div",{class:"el-slider__marks-text",style:this.mark.style||{}},[t])}},xa=r({name:"ElSlider",mixins:[C.a],inject:{elForm:{default:""}},props:{min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},value:{type:[Number,Array],default:0},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},inputSize:{type:String,default:"small"},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:Function,disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String},debounce:{type:Number,default:300},label:{type:String},tooltipClass:String,marks:Object},components:{ElInputNumber:va.a,SliderButton:ba,SliderMarker:ya},data:function(){return{firstValue:null,secondValue:null,oldValue:null,dragging:!1,sliderSize:1}},watch:{value:function(e,t){this.dragging||Array.isArray(e)&&Array.isArray(t)&&e.every((function(e,i){return e===t[i]}))||this.setValues()},dragging:function(e){e||this.setValues()},firstValue:function(e){this.range?this.$emit("input",[this.minValue,this.maxValue]):this.$emit("input",e)},secondValue:function(){this.range&&this.$emit("input",[this.minValue,this.maxValue])},min:function(){this.setValues()},max:function(){this.setValues()}},methods:{valueChanged:function(){var e=this;return this.range?![this.minValue,this.maxValue].every((function(t,i){return t===e.oldValue[i]})):this.value!==this.oldValue},setValues:function(){if(this.min>this.max)console.error("[Element Error][Slider]min should not be greater than max.");else{var e=this.value;this.range&&Array.isArray(e)?e[1]this.max?this.$emit("input",[this.max,this.max]):e[0]this.max?this.$emit("input",[e[0],this.max]):(this.firstValue=e[0],this.secondValue=e[1],this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",[this.minValue,this.maxValue]),this.oldValue=e.slice())):this.range||"number"!=typeof e||isNaN(e)||(ethis.max?this.$emit("input",this.max):(this.firstValue=e,this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",e),this.oldValue=e)))}},setPosition:function(e){var t=this.min+e*(this.max-this.min)/100;if(this.range){var i=void 0;i=Math.abs(this.minValue-t)this.secondValue?"button1":"button2",this.$refs[i].setPosition(e)}else this.$refs.button1.setPosition(e)},onSliderClick:function(e){if(!this.sliderDisabled&&!this.dragging){if(this.resetSize(),this.vertical){var t=this.$refs.slider.getBoundingClientRect().bottom;this.setPosition((t-e.clientY)/this.sliderSize*100)}else{var i=this.$refs.slider.getBoundingClientRect().left;this.setPosition((e.clientX-i)/this.sliderSize*100)}this.emitChange()}},resetSize:function(){this.$refs.slider&&(this.sliderSize=this.$refs.slider["client"+(this.vertical?"Height":"Width")])},emitChange:function(){var e=this;this.$nextTick((function(){e.$emit("change",e.range?[e.minValue,e.maxValue]:e.value)}))},getStopStyle:function(e){return this.vertical?{bottom:e+"%"}:{left:e+"%"}}},computed:{stops:function(){var e=this;if(!this.showStops||this.min>this.max)return[];if(0===this.step)return[];for(var t=(this.max-this.min)/this.step,i=100*this.step/(this.max-this.min),n=[],r=1;r100*(e.maxValue-e.min)/(e.max-e.min)})):n.filter((function(t){return t>100*(e.firstValue-e.min)/(e.max-e.min)}))},markList:function(){var e=this;return this.marks?Object.keys(this.marks).map(parseFloat).sort((function(e,t){return e-t})).filter((function(t){return t<=e.max&&t>=e.min})).map((function(t){return{point:t,position:100*(t-e.min)/(e.max-e.min),mark:e.marks[t]}})):[]},minValue:function(){return Math.min(this.firstValue,this.secondValue)},maxValue:function(){return Math.max(this.firstValue,this.secondValue)},barSize:function(){return this.range?100*(this.maxValue-this.minValue)/(this.max-this.min)+"%":100*(this.firstValue-this.min)/(this.max-this.min)+"%"},barStart:function(){return this.range?100*(this.minValue-this.min)/(this.max-this.min)+"%":"0%"},precision:function(){var e=[this.min,this.max,this.step].map((function(e){var t=(""+e).split(".")[1];return t?t.length:0}));return Math.max.apply(null,e)},runwayStyle:function(){return this.vertical?{height:this.height}:{}},barStyle:function(){return this.vertical?{height:this.barSize,bottom:this.barStart}:{width:this.barSize,left:this.barStart}},sliderDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},mounted:function(){var e=void 0;this.range?(Array.isArray(this.value)?(this.firstValue=Math.max(this.min,this.value[0]),this.secondValue=Math.min(this.max,this.value[1])):(this.firstValue=this.min,this.secondValue=this.max),this.oldValue=[this.firstValue,this.secondValue],e=this.firstValue+"-"+this.secondValue):("number"!=typeof this.value||isNaN(this.value)?this.firstValue=this.min:this.firstValue=Math.min(this.max,Math.max(this.min,this.value)),this.oldValue=this.firstValue,e=this.firstValue),this.$el.setAttribute("aria-valuetext",e),this.$el.setAttribute("aria-label",this.label?this.label:"slider between "+this.min+" and "+this.max),this.resetSize(),window.addEventListener("resize",this.resetSize)},beforeDestroy:function(){window.removeEventListener("resize",this.resetSize)}},fa,[],!1,null,null,null);xa.options.__file="packages/slider/src/main.vue";var ka=xa.exports;ka.install=function(e){e.component(ka.name,ka)};var wa=ka,Ca=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-loading-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-loading-mask",class:[e.customClass,{"is-fullscreen":e.fullscreen}],style:{backgroundColor:e.background||""}},[i("div",{staticClass:"el-loading-spinner"},[e.spinner?i("i",{class:e.spinner}):i("svg",{staticClass:"circular",attrs:{viewBox:"25 25 50 50"}},[i("circle",{staticClass:"path",attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]),e.text?i("p",{staticClass:"el-loading-text"},[e._v(e._s(e.text))]):e._e()])])])};Ca._withStripped=!0;var Sa=r({data:function(){return{text:null,spinner:null,background:null,fullscreen:!0,visible:!1,customClass:""}},methods:{handleAfterLeave:function(){this.$emit("after-leave")},setText:function(e){this.text=e}}},Ca,[],!1,null,null,null);Sa.options.__file="packages/loading/src/loading.vue";var Oa=Sa.exports,Da=i(32),Ea=i.n(Da),Ta=di.a.extend(Oa),$a={install:function(e){if(!e.prototype.$isServer){var t=function(t,n){n.value?e.nextTick((function(){n.modifiers.fullscreen?(t.originalPosition=Object(fe.getStyle)(document.body,"position"),t.originalOverflow=Object(fe.getStyle)(document.body,"overflow"),t.maskStyle.zIndex=b.PopupManager.nextZIndex(),Object(fe.addClass)(t.mask,"is-fullscreen"),i(document.body,t,n)):(Object(fe.removeClass)(t.mask,"is-fullscreen"),n.modifiers.body?(t.originalPosition=Object(fe.getStyle)(document.body,"position"),["top","left"].forEach((function(e){var i="top"===e?"scrollTop":"scrollLeft";t.maskStyle[e]=t.getBoundingClientRect()[e]+document.body[i]+document.documentElement[i]-parseInt(Object(fe.getStyle)(document.body,"margin-"+e),10)+"px"})),["height","width"].forEach((function(e){t.maskStyle[e]=t.getBoundingClientRect()[e]+"px"})),i(document.body,t,n)):(t.originalPosition=Object(fe.getStyle)(t,"position"),i(t,t,n)))})):(Ea()(t.instance,(function(e){if(t.instance.hiding){t.domVisible=!1;var i=n.modifiers.fullscreen||n.modifiers.body?document.body:t;Object(fe.removeClass)(i,"el-loading-parent--relative"),Object(fe.removeClass)(i,"el-loading-parent--hidden"),t.instance.hiding=!1}}),300,!0),t.instance.visible=!1,t.instance.hiding=!0)},i=function(t,i,n){i.domVisible||"none"===Object(fe.getStyle)(i,"display")||"hidden"===Object(fe.getStyle)(i,"visibility")?i.domVisible&&!0===i.instance.hiding&&(i.instance.visible=!0,i.instance.hiding=!1):(Object.keys(i.maskStyle).forEach((function(e){i.mask.style[e]=i.maskStyle[e]})),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&Object(fe.addClass)(t,"el-loading-parent--relative"),n.modifiers.fullscreen&&n.modifiers.lock&&Object(fe.addClass)(t,"el-loading-parent--hidden"),i.domVisible=!0,t.appendChild(i.mask),e.nextTick((function(){i.instance.hiding?i.instance.$emit("after-leave"):i.instance.visible=!0})),i.domInserted=!0)};e.directive("loading",{bind:function(e,i,n){var r=e.getAttribute("element-loading-text"),s=e.getAttribute("element-loading-spinner"),a=e.getAttribute("element-loading-background"),o=e.getAttribute("element-loading-custom-class"),l=n.context,u=new Ta({el:document.createElement("div"),data:{text:l&&l[r]||r,spinner:l&&l[s]||s,background:l&&l[a]||a,customClass:l&&l[o]||o,fullscreen:!!i.modifiers.fullscreen}});e.instance=u,e.mask=u.$el,e.maskStyle={},i.value&&t(e,i)},update:function(e,i){e.instance.setText(e.getAttribute("element-loading-text")),i.oldValue!==i.value&&t(e,i)},unbind:function(e,i){e.domInserted&&(e.mask&&e.mask.parentNode&&e.mask.parentNode.removeChild(e.mask),t(e,{value:!1,modifiers:i.modifiers})),e.instance&&e.instance.$destroy()}})}}},Pa=$a,ja=di.a.extend(Oa),Ma={text:null,fullscreen:!0,body:!1,lock:!1,customClass:""},Ia=void 0;ja.prototype.originalPosition="",ja.prototype.originalOverflow="",ja.prototype.close=function(){var e=this;this.fullscreen&&(Ia=void 0),Ea()(this,(function(t){var i=e.fullscreen||e.body?document.body:e.target;Object(fe.removeClass)(i,"el-loading-parent--relative"),Object(fe.removeClass)(i,"el-loading-parent--hidden"),e.$el&&e.$el.parentNode&&e.$el.parentNode.removeChild(e.$el),e.$destroy()}),300),this.visible=!1};var Aa=function(e,t,i){var n={};e.fullscreen?(i.originalPosition=Object(fe.getStyle)(document.body,"position"),i.originalOverflow=Object(fe.getStyle)(document.body,"overflow"),n.zIndex=b.PopupManager.nextZIndex()):e.body?(i.originalPosition=Object(fe.getStyle)(document.body,"position"),["top","left"].forEach((function(t){var i="top"===t?"scrollTop":"scrollLeft";n[t]=e.target.getBoundingClientRect()[t]+document.body[i]+document.documentElement[i]+"px"})),["height","width"].forEach((function(t){n[t]=e.target.getBoundingClientRect()[t]+"px"}))):i.originalPosition=Object(fe.getStyle)(t,"position"),Object.keys(n).forEach((function(e){i.$el.style[e]=n[e]}))},Na=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!di.a.prototype.$isServer){if("string"==typeof(e=Be()({},Ma,e)).target&&(e.target=document.querySelector(e.target)),e.target=e.target||document.body,e.target!==document.body?e.fullscreen=!1:e.body=!0,e.fullscreen&&Ia)return Ia;var t=e.body?document.body:e.target,i=new ja({el:document.createElement("div"),data:e});return Aa(e,t,i),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&Object(fe.addClass)(t,"el-loading-parent--relative"),e.fullscreen&&e.lock&&Object(fe.addClass)(t,"el-loading-parent--hidden"),t.appendChild(i.$el),di.a.nextTick((function(){i.visible=!0})),e.fullscreen&&(Ia=i),i}},La={install:function(e){e.use(Pa),e.prototype.$loading=Na},directive:Pa,service:Na},Fa=function(){var e=this.$createElement;return(this._self._c||e)("i",{class:"el-icon-"+this.name})};Fa._withStripped=!0;var Va=r({name:"ElIcon",props:{name:String}},Fa,[],!1,null,null,null);Va.options.__file="packages/icon/src/icon.vue";var za=Va.exports;za.install=function(e){e.component(za.name,za)};var Ra=za,Ba={name:"ElRow",componentName:"ElRow",props:{tag:{type:String,default:"div"},gutter:Number,type:String,justify:{type:String,default:"start"},align:String},computed:{style:function(){var e={};return this.gutter&&(e.marginLeft="-"+this.gutter/2+"px",e.marginRight=e.marginLeft),e}},render:function(e){return e(this.tag,{class:["el-row","start"!==this.justify?"is-justify-"+this.justify:"",this.align?"is-align-"+this.align:"",{"el-row--flex":"flex"===this.type}],style:this.style},this.$slots.default)},install:function(e){e.component(Ba.name,Ba)}},Ha=Ba,Wa="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},qa={name:"ElCol",props:{span:{type:Number,default:24},tag:{type:String,default:"div"},offset:Number,pull:Number,push:Number,xs:[Number,Object],sm:[Number,Object],md:[Number,Object],lg:[Number,Object],xl:[Number,Object]},computed:{gutter:function(){for(var e=this.$parent;e&&"ElRow"!==e.$options.componentName;)e=e.$parent;return e?e.gutter:0}},render:function(e){var t=this,i=[],n={};return this.gutter&&(n.paddingLeft=this.gutter/2+"px",n.paddingRight=n.paddingLeft),["span","offset","pull","push"].forEach((function(e){(t[e]||0===t[e])&&i.push("span"!==e?"el-col-"+e+"-"+t[e]:"el-col-"+t[e])})),["xs","sm","md","lg","xl"].forEach((function(e){if("number"==typeof t[e])i.push("el-col-"+e+"-"+t[e]);else if("object"===Wa(t[e])){var n=t[e];Object.keys(n).forEach((function(t){i.push("span"!==t?"el-col-"+e+"-"+t+"-"+n[t]:"el-col-"+e+"-"+n[t])}))}})),e(this.tag,{class:["el-col",i],style:n},this.$slots.default)},install:function(e){e.component(qa.name,qa)}},Ua=qa,Ga=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition-group",{class:["el-upload-list","el-upload-list--"+e.listType,{"is-disabled":e.disabled}],attrs:{tag:"ul",name:"el-list"}},e._l(e.files,(function(t){return i("li",{key:t.uid,class:["el-upload-list__item","is-"+t.status,e.focusing?"focusing":""],attrs:{tabindex:"0"},on:{keydown:function(i){if(!("button"in i)&&e._k(i.keyCode,"delete",[8,46],i.key,["Backspace","Delete","Del"]))return null;!e.disabled&&e.$emit("remove",t)},focus:function(t){e.focusing=!0},blur:function(t){e.focusing=!1},click:function(t){e.focusing=!1}}},[e._t("default",["uploading"!==t.status&&["picture-card","picture"].indexOf(e.listType)>-1?i("img",{staticClass:"el-upload-list__item-thumbnail",attrs:{src:t.url,alt:""}}):e._e(),i("a",{staticClass:"el-upload-list__item-name",on:{click:function(i){e.handleClick(t)}}},[i("i",{staticClass:"el-icon-document"}),e._v(e._s(t.name)+"\n ")]),i("label",{staticClass:"el-upload-list__item-status-label"},[i("i",{class:{"el-icon-upload-success":!0,"el-icon-circle-check":"text"===e.listType,"el-icon-check":["picture-card","picture"].indexOf(e.listType)>-1}})]),e.disabled?e._e():i("i",{staticClass:"el-icon-close",on:{click:function(i){e.$emit("remove",t)}}}),e.disabled?e._e():i("i",{staticClass:"el-icon-close-tip"},[e._v(e._s(e.t("el.upload.deleteTip")))]),"uploading"===t.status?i("el-progress",{attrs:{type:"picture-card"===e.listType?"circle":"line","stroke-width":"picture-card"===e.listType?6:2,percentage:e.parsePercentage(t.percentage)}}):e._e(),"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-actions"},[e.handlePreview&&"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-preview",on:{click:function(i){e.handlePreview(t)}}},[i("i",{staticClass:"el-icon-zoom-in"})]):e._e(),e.disabled?e._e():i("span",{staticClass:"el-upload-list__item-delete",on:{click:function(i){e.$emit("remove",t)}}},[i("i",{staticClass:"el-icon-delete"})])]):e._e()],{file:t})],2)})),0)};Ga._withStripped=!0;var Ya=i(33),Ka=i.n(Ya),Xa=r({name:"ElUploadList",mixins:[f.a],data:function(){return{focusing:!1}},components:{ElProgress:Ka.a},props:{files:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},handlePreview:Function,listType:String},methods:{parsePercentage:function(e){return parseInt(e,10)},handleClick:function(e){this.handlePreview&&this.handlePreview(e)}}},Ga,[],!1,null,null,null);Xa.options.__file="packages/upload/src/upload-list.vue";var Za=Xa.exports,Qa=i(24),Ja=i.n(Qa);var eo=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{staticClass:"el-upload-dragger",class:{"is-dragover":e.dragover},on:{drop:function(t){return t.preventDefault(),e.onDrop(t)},dragover:function(t){return t.preventDefault(),e.onDragover(t)},dragleave:function(t){t.preventDefault(),e.dragover=!1}}},[e._t("default")],2)};eo._withStripped=!0;var to=r({name:"ElUploadDrag",props:{disabled:Boolean},inject:{uploader:{default:""}},data:function(){return{dragover:!1}},methods:{onDragover:function(){this.disabled||(this.dragover=!0)},onDrop:function(e){if(!this.disabled&&this.uploader){var t=this.uploader.accept;this.dragover=!1,t?this.$emit("file",[].slice.call(e.dataTransfer.files).filter((function(e){var i=e.type,n=e.name,r=n.indexOf(".")>-1?"."+n.split(".").pop():"",s=i.replace(/\/.*$/,"");return t.split(",").map((function(e){return e.trim()})).filter((function(e){return e})).some((function(e){return/\..+$/.test(e)?r===e:/\/\*$/.test(e)?s===e.replace(/\/\*$/,""):!!/^[^\/]+\/[^\/]+$/.test(e)&&i===e}))}))):this.$emit("file",e.dataTransfer.files)}}}},eo,[],!1,null,null,null);to.options.__file="packages/upload/src/upload-dragger.vue";var io=r({inject:["uploader"],components:{UploadDragger:to.exports},props:{type:String,action:{type:String,required:!0},name:{type:String,default:"file"},data:Object,headers:Object,withCredentials:Boolean,multiple:Boolean,accept:String,onStart:Function,onProgress:Function,onSuccess:Function,onError:Function,beforeUpload:Function,drag:Boolean,onPreview:{type:Function,default:function(){}},onRemove:{type:Function,default:function(){}},fileList:Array,autoUpload:Boolean,listType:String,httpRequest:{type:Function,default:function(e){if("undefined"!=typeof XMLHttpRequest){var t=new XMLHttpRequest,i=e.action;t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var n=new FormData;e.data&&Object.keys(e.data).forEach((function(t){n.append(t,e.data[t])})),n.append(e.filename,e.file,e.file.name),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300)return e.onError(function(e,t,i){var n=void 0;n=i.response?""+(i.response.error||i.response):i.responseText?""+i.responseText:"fail to post "+e+" "+i.status;var r=new Error(n);return r.status=i.status,r.method="post",r.url=e,r}(i,0,t));e.onSuccess(function(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(e){return t}}(t))},t.open("post",i,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);var r=e.headers||{};for(var s in r)r.hasOwnProperty(s)&&null!==r[s]&&t.setRequestHeader(s,r[s]);return t.send(n),t}}},disabled:Boolean,limit:Number,onExceed:Function},data:function(){return{mouseover:!1,reqs:{}}},methods:{isImage:function(e){return-1!==e.indexOf("image")},handleChange:function(e){var t=e.target.files;t&&this.uploadFiles(t)},uploadFiles:function(e){var t=this;if(this.limit&&this.fileList.length+e.length>this.limit)this.onExceed&&this.onExceed(e,this.fileList);else{var i=Array.prototype.slice.call(e);this.multiple||(i=i.slice(0,1)),0!==i.length&&i.forEach((function(e){t.onStart(e),t.autoUpload&&t.upload(e)}))}},upload:function(e){var t=this;if(this.$refs.input.value=null,!this.beforeUpload)return this.post(e);var i=this.beforeUpload(e);i&&i.then?i.then((function(i){var n=Object.prototype.toString.call(i);if("[object File]"===n||"[object Blob]"===n){for(var r in"[object Blob]"===n&&(i=new File([i],e.name,{type:e.type})),e)e.hasOwnProperty(r)&&(i[r]=e[r]);t.post(i)}else t.post(e)}),(function(){t.onRemove(null,e)})):!1!==i?this.post(e):this.onRemove(null,e)},abort:function(e){var t=this.reqs;if(e){var i=e;e.uid&&(i=e.uid),t[i]&&t[i].abort()}else Object.keys(t).forEach((function(e){t[e]&&t[e].abort(),delete t[e]}))},post:function(e){var t=this,i=e.uid,n={headers:this.headers,withCredentials:this.withCredentials,file:e,data:this.data,filename:this.name,action:this.action,onProgress:function(i){t.onProgress(i,e)},onSuccess:function(n){t.onSuccess(n,e),delete t.reqs[i]},onError:function(n){t.onError(n,e),delete t.reqs[i]}},r=this.httpRequest(n);this.reqs[i]=r,r&&r.then&&r.then(n.onSuccess,n.onError)},handleClick:function(){this.disabled||(this.$refs.input.value=null,this.$refs.input.click())},handleKeydown:function(e){e.target===e.currentTarget&&(13!==e.keyCode&&32!==e.keyCode||this.handleClick())}},render:function(e){var t=this.handleClick,i=this.drag,n=this.name,r=this.handleChange,s=this.multiple,a=this.accept,o=this.listType,l=this.uploadFiles,u=this.disabled,c={class:{"el-upload":!0},on:{click:t,keydown:this.handleKeydown}};return c.class["el-upload--"+o]=!0,e("div",Ja()([c,{attrs:{tabindex:"0"}}]),[i?e("upload-dragger",{attrs:{disabled:u},on:{file:l}},[this.$slots.default]):this.$slots.default,e("input",{class:"el-upload__input",attrs:{type:"file",name:n,multiple:s,accept:a},ref:"input",on:{change:r}})])}},void 0,void 0,!1,null,null,null);io.options.__file="packages/upload/src/upload.vue";var no=io.exports;function ro(){}var so=r({name:"ElUpload",mixins:[k.a],components:{ElProgress:Ka.a,UploadList:Za,Upload:no},provide:function(){return{uploader:this}},inject:{elForm:{default:""}},props:{action:{type:String,required:!0},headers:{type:Object,default:function(){return{}}},data:Object,multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,dragger:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:String,type:{type:String,default:"select"},beforeUpload:Function,beforeRemove:Function,onRemove:{type:Function,default:ro},onChange:{type:Function,default:ro},onPreview:{type:Function},onSuccess:{type:Function,default:ro},onProgress:{type:Function,default:ro},onError:{type:Function,default:ro},fileList:{type:Array,default:function(){return[]}},autoUpload:{type:Boolean,default:!0},listType:{type:String,default:"text"},httpRequest:Function,disabled:Boolean,limit:Number,onExceed:{type:Function,default:ro}},data:function(){return{uploadFiles:[],dragOver:!1,draging:!1,tempIndex:1}},computed:{uploadDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{listType:function(e){"picture-card"!==e&&"picture"!==e||(this.uploadFiles=this.uploadFiles.map((function(e){if(!e.url&&e.raw)try{e.url=URL.createObjectURL(e.raw)}catch(e){console.error("[Element Error][Upload]",e)}return e})))},fileList:{immediate:!0,handler:function(e){var t=this;this.uploadFiles=e.map((function(e){return e.uid=e.uid||Date.now()+t.tempIndex++,e.status=e.status||"success",e}))}}},methods:{handleStart:function(e){e.uid=Date.now()+this.tempIndex++;var t={status:"ready",name:e.name,size:e.size,percentage:0,uid:e.uid,raw:e};if("picture-card"===this.listType||"picture"===this.listType)try{t.url=URL.createObjectURL(e)}catch(e){return void console.error("[Element Error][Upload]",e)}this.uploadFiles.push(t),this.onChange(t,this.uploadFiles)},handleProgress:function(e,t){var i=this.getFile(t);this.onProgress(e,i,this.uploadFiles),i.status="uploading",i.percentage=e.percent||0},handleSuccess:function(e,t){var i=this.getFile(t);i&&(i.status="success",i.response=e,this.onSuccess(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles))},handleError:function(e,t){var i=this.getFile(t),n=this.uploadFiles;i.status="fail",n.splice(n.indexOf(i),1),this.onError(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles)},handleRemove:function(e,t){var i=this;t&&(e=this.getFile(t));var n=function(){i.abort(e);var t=i.uploadFiles;t.splice(t.indexOf(e),1),i.onRemove(e,t)};if(this.beforeRemove){if("function"==typeof this.beforeRemove){var r=this.beforeRemove(e,this.uploadFiles);r&&r.then?r.then((function(){n()}),ro):!1!==r&&n()}}else n()},getFile:function(e){var t=this.uploadFiles,i=void 0;return t.every((function(t){return!(i=e.uid===t.uid?t:null)})),i},abort:function(e){this.$refs["upload-inner"].abort(e)},clearFiles:function(){this.uploadFiles=[]},submit:function(){var e=this;this.uploadFiles.filter((function(e){return"ready"===e.status})).forEach((function(t){e.$refs["upload-inner"].upload(t.raw)}))},getMigratingConfig:function(){return{props:{"default-file-list":"default-file-list is renamed to file-list.","show-upload-list":"show-upload-list is renamed to show-file-list.","thumbnail-mode":"thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan"}}}},beforeDestroy:function(){this.uploadFiles.forEach((function(e){e.url&&0===e.url.indexOf("blob:")&&URL.revokeObjectURL(e.url)}))},render:function(e){var t=this,i=void 0;this.showFileList&&(i=e(Za,{attrs:{disabled:this.uploadDisabled,listType:this.listType,files:this.uploadFiles,handlePreview:this.onPreview},on:{remove:this.handleRemove}},[function(e){if(t.$scopedSlots.file)return t.$scopedSlots.file({file:e.file})}]));var n=e("upload",{props:{type:this.type,drag:this.drag,action:this.action,multiple:this.multiple,"before-upload":this.beforeUpload,"with-credentials":this.withCredentials,headers:this.headers,name:this.name,data:this.data,accept:this.accept,fileList:this.uploadFiles,autoUpload:this.autoUpload,listType:this.listType,disabled:this.uploadDisabled,limit:this.limit,"on-exceed":this.onExceed,"on-start":this.handleStart,"on-progress":this.handleProgress,"on-success":this.handleSuccess,"on-error":this.handleError,"on-preview":this.onPreview,"on-remove":this.handleRemove,"http-request":this.httpRequest},ref:"upload-inner"},[this.$slots.trigger||this.$slots.default]);return e("div",["picture-card"===this.listType?i:"",this.$slots.trigger?[n,this.$slots.default]:n,this.$slots.tip,"picture-card"!==this.listType?i:""])}},void 0,void 0,!1,null,null,null);so.options.__file="packages/upload/src/index.vue";var ao=so.exports;ao.install=function(e){e.component(ao.name,ao)};var oo=ao,lo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?i("div",{staticClass:"el-progress-bar"},[i("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[i("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?i("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):i("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[i("svg",{attrs:{viewBox:"0 0 100 100"}},[i("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),i("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":e.strokeLinecap,"stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?i("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?i("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};lo._withStripped=!0;var uo=r({name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},strokeLinecap:{type:String,default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort((function(e,t){return e.percentage-t.percentage})),i=0;ie)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map((function(e,i){return"string"==typeof e?{color:e,percentage:(i+1)*t}:e}))}}},lo,[],!1,null,null,null);uo.options.__file="packages/progress/src/progress.vue";var co=uo.exports;co.install=function(e){e.component(co.name,co)};var ho=co,po=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-spinner"},[t("svg",{staticClass:"el-spinner-inner",style:{width:this.radius/2+"px",height:this.radius/2+"px"},attrs:{viewBox:"0 0 50 50"}},[t("circle",{staticClass:"path",attrs:{cx:"25",cy:"25",r:"20",fill:"none",stroke:this.strokeColor,"stroke-width":this.strokeWidth}})])])};po._withStripped=!0;var fo=r({name:"ElSpinner",props:{type:String,radius:{type:Number,default:100},strokeWidth:{type:Number,default:5},strokeColor:{type:String,default:"#efefef"}}},po,[],!1,null,null,null);fo.options.__file="packages/spinner/src/spinner.vue";var mo=fo.exports;mo.install=function(e){e.component(mo.name,mo)};var vo=mo,go=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-message-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-message",e.type&&!e.iconClass?"el-message--"+e.type:"",e.center?"is-center":"",e.showClose?"is-closable":"",e.customClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:e.clearTimer,mouseleave:e.startTimer}},[e.iconClass?i("i",{class:e.iconClass}):i("i",{class:e.typeClass}),e._t("default",[e.dangerouslyUseHTMLString?i("p",{staticClass:"el-message__content",domProps:{innerHTML:e._s(e.message)}}):i("p",{staticClass:"el-message__content"},[e._v(e._s(e.message))])]),e.showClose?i("i",{staticClass:"el-message__closeBtn el-icon-close",on:{click:e.close}}):e._e()],2)])};go._withStripped=!0;var _o={success:"success",info:"info",warning:"warning",error:"error"},bo=r({data:function(){return{visible:!1,message:"",duration:3e3,type:"info",iconClass:"",customClass:"",onClose:null,showClose:!1,closed:!1,verticalOffset:20,timer:null,dangerouslyUseHTMLString:!1,center:!1}},computed:{typeClass:function(){return this.type&&!this.iconClass?"el-message__icon el-icon-"+_o[this.type]:""},positionStyle:function(){return{top:this.verticalOffset+"px"}}},watch:{closed:function(e){e&&(this.visible=!1)}},methods:{handleAfterLeave:function(){this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose(this)},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout((function(){e.closed||e.close()}),this.duration))},keydown:function(e){27===e.keyCode&&(this.closed||this.close())}},mounted:function(){this.startTimer(),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},go,[],!1,null,null,null);bo.options.__file="packages/message/src/main.vue";var yo=bo.exports,xo=i(15),ko=Object.assign||function(e){for(var t=1;tSo.length-1))for(var a=n;a=0;e--)So[e].close()};var Eo=Do,To=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-badge"},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-center"}},[i("sup",{directives:[{name:"show",rawName:"v-show",value:!e.hidden&&(e.content||0===e.content||e.isDot),expression:"!hidden && (content || content === 0 || isDot)"}],staticClass:"el-badge__content",class:["el-badge__content--"+e.type,{"is-fixed":e.$slots.default,"is-dot":e.isDot}],domProps:{textContent:e._s(e.content)}})])],2)};To._withStripped=!0;var $o=r({name:"ElBadge",props:{value:[String,Number],max:Number,isDot:Boolean,hidden:Boolean,type:{type:String,validator:function(e){return["primary","success","warning","info","danger"].indexOf(e)>-1}}},computed:{content:function(){if(!this.isDot){var e=this.value,t=this.max;return"number"==typeof e&&"number"==typeof t&&t0&&e-1this.value,i=this.allowHalf&&this.pointerAtLeftHalf&&e-.5<=this.currentValue&&e>this.currentValue;return t||i},getIconStyle:function(e){var t=this.rateDisabled?this.disabledVoidColor:this.voidColor;return{color:e<=this.currentValue?this.activeColor:t}},selectValue:function(e){this.rateDisabled||(this.allowHalf&&this.pointerAtLeftHalf?(this.$emit("input",this.currentValue),this.$emit("change",this.currentValue)):(this.$emit("input",e),this.$emit("change",e)))},handleKey:function(e){if(!this.rateDisabled){var t=this.currentValue,i=e.keyCode;38===i||39===i?(this.allowHalf?t+=.5:t+=1,e.stopPropagation(),e.preventDefault()):37!==i&&40!==i||(this.allowHalf?t-=.5:t-=1,e.stopPropagation(),e.preventDefault()),t=(t=t<0?0:t)>this.max?this.max:t,this.$emit("input",t),this.$emit("change",t)}},setCurrentValue:function(e,t){if(!this.rateDisabled){if(this.allowHalf){var i=t.target;Object(fe.hasClass)(i,"el-rate__item")&&(i=i.querySelector(".el-rate__icon")),Object(fe.hasClass)(i,"el-rate__decimal")&&(i=i.parentNode),this.pointerAtLeftHalf=2*t.offsetX<=i.clientWidth,this.currentValue=this.pointerAtLeftHalf?e-.5:e}else this.currentValue=e;this.hoverIndex=e}},resetCurrentValue:function(){this.rateDisabled||(this.allowHalf&&(this.pointerAtLeftHalf=this.value!==Math.floor(this.value)),this.currentValue=this.value,this.hoverIndex=-1)}},created:function(){this.value||this.$emit("input",0)}},Lo,[],!1,null,null,null);Fo.options.__file="packages/rate/src/main.vue";var Vo=Fo.exports;Vo.install=function(e){e.component(Vo.name,Vo)};var zo=Vo,Ro=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-steps",class:[!this.simple&&"el-steps--"+this.direction,this.simple&&"el-steps--simple"]},[this._t("default")],2)};Ro._withStripped=!0;var Bo=r({name:"ElSteps",mixins:[k.a],props:{space:[Number,String],active:Number,direction:{type:String,default:"horizontal"},alignCenter:Boolean,simple:Boolean,finishStatus:{type:String,default:"finish"},processStatus:{type:String,default:"process"}},data:function(){return{steps:[],stepOffset:0}},methods:{getMigratingConfig:function(){return{props:{center:"center is removed."}}}},watch:{active:function(e,t){this.$emit("change",e,t)},steps:function(e){e.forEach((function(e,t){e.index=t}))}}},Ro,[],!1,null,null,null);Bo.options.__file="packages/steps/src/steps.vue";var Ho=Bo.exports;Ho.install=function(e){e.component(Ho.name,Ho)};var Wo=Ho,qo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-step",class:[!e.isSimple&&"is-"+e.$parent.direction,e.isSimple&&"is-simple",e.isLast&&!e.space&&!e.isCenter&&"is-flex",e.isCenter&&!e.isVertical&&!e.isSimple&&"is-center"],style:e.style},[i("div",{staticClass:"el-step__head",class:"is-"+e.currentStatus},[i("div",{staticClass:"el-step__line",style:e.isLast?"":{marginRight:e.$parent.stepOffset+"px"}},[i("i",{staticClass:"el-step__line-inner",style:e.lineStyle})]),i("div",{staticClass:"el-step__icon",class:"is-"+(e.icon?"icon":"text")},["success"!==e.currentStatus&&"error"!==e.currentStatus?e._t("icon",[e.icon?i("i",{staticClass:"el-step__icon-inner",class:[e.icon]}):e._e(),e.icon||e.isSimple?e._e():i("div",{staticClass:"el-step__icon-inner"},[e._v(e._s(e.index+1))])]):i("i",{staticClass:"el-step__icon-inner is-status",class:["el-icon-"+("success"===e.currentStatus?"check":"close")]})],2)]),i("div",{staticClass:"el-step__main"},[i("div",{ref:"title",staticClass:"el-step__title",class:["is-"+e.currentStatus]},[e._t("title",[e._v(e._s(e.title))])],2),e.isSimple?i("div",{staticClass:"el-step__arrow"}):i("div",{staticClass:"el-step__description",class:["is-"+e.currentStatus]},[e._t("description",[e._v(e._s(e.description))])],2)])])};qo._withStripped=!0;var Uo=r({name:"ElStep",props:{title:String,icon:String,description:String,status:String},data:function(){return{index:-1,lineStyle:{},internalStatus:""}},beforeCreate:function(){this.$parent.steps.push(this)},beforeDestroy:function(){var e=this.$parent.steps,t=e.indexOf(this);t>=0&&e.splice(t,1)},computed:{currentStatus:function(){return this.status||this.internalStatus},prevStatus:function(){var e=this.$parent.steps[this.index-1];return e?e.currentStatus:"wait"},isCenter:function(){return this.$parent.alignCenter},isVertical:function(){return"vertical"===this.$parent.direction},isSimple:function(){return this.$parent.simple},isLast:function(){var e=this.$parent;return e.steps[e.steps.length-1]===this},stepsCount:function(){return this.$parent.steps.length},space:function(){var e=this.isSimple,t=this.$parent.space;return e?"":t},style:function(){var e={},t=this.$parent.steps.length,i="number"==typeof this.space?this.space+"px":this.space?this.space:100/(t-(this.isCenter?0:1))+"%";return e.flexBasis=i,this.isVertical||(this.isLast?e.maxWidth=100/this.stepsCount+"%":e.marginRight=-this.$parent.stepOffset+"px"),e}},methods:{updateStatus:function(e){var t=this.$parent.$children[this.index-1];e>this.index?this.internalStatus=this.$parent.finishStatus:e===this.index&&"error"!==this.prevStatus?this.internalStatus=this.$parent.processStatus:this.internalStatus="wait",t&&t.calcProgress(this.internalStatus)},calcProgress:function(e){var t=100,i={};i.transitionDelay=150*this.index+"ms",e===this.$parent.processStatus?(this.currentStatus,t=0):"wait"===e&&(t=0,i.transitionDelay=-150*this.index+"ms"),i.borderWidth=t&&!this.isSimple?"1px":0,"vertical"===this.$parent.direction?i.height=t+"%":i.width=t+"%",this.lineStyle=i}},mounted:function(){var e=this,t=this.$watch("index",(function(i){e.$watch("$parent.active",e.updateStatus,{immediate:!0}),e.$watch("$parent.processStatus",(function(){var t=e.$parent.active;e.updateStatus(t)}),{immediate:!0}),t()}))}},qo,[],!1,null,null,null);Uo.options.__file="packages/steps/src/step.vue";var Go=Uo.exports;Go.install=function(e){e.component(Go.name,Go)};var Yo=Go,Ko=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:e.carouselClasses,on:{mouseenter:function(t){return t.stopPropagation(),e.handleMouseEnter(t)},mouseleave:function(t){return t.stopPropagation(),e.handleMouseLeave(t)}}},[i("div",{staticClass:"el-carousel__container",style:{height:e.height}},[e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-left"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex>0),expression:"(arrow === 'always' || hover) && (loop || activeIndex > 0)"}],staticClass:"el-carousel__arrow el-carousel__arrow--left",attrs:{type:"button"},on:{mouseenter:function(t){e.handleButtonEnter("left")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex-1)}}},[i("i",{staticClass:"el-icon-arrow-left"})])]):e._e(),e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-right"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex0}))},carouselClasses:function(){var e=["el-carousel","el-carousel--"+this.direction];return"card"===this.type&&e.push("el-carousel--card"),e},indicatorsClasses:function(){var e=["el-carousel__indicators","el-carousel__indicators--"+this.direction];return this.hasLabel&&e.push("el-carousel__indicators--labels"),"outside"!==this.indicatorPosition&&"card"!==this.type||e.push("el-carousel__indicators--outside"),e}},watch:{items:function(e){e.length>0&&this.setActiveItem(this.initialIndex)},activeIndex:function(e,t){this.resetItemPosition(t),t>-1&&this.$emit("change",e,t)},autoplay:function(e){e?this.startTimer():this.pauseTimer()},loop:function(){this.setActiveItem(this.activeIndex)},interval:function(){this.pauseTimer(),this.startTimer()}},methods:{handleMouseEnter:function(){this.hover=!0,this.pauseTimer()},handleMouseLeave:function(){this.hover=!1,this.startTimer()},itemInStage:function(e,t){var i=this.items.length;return t===i-1&&e.inStage&&this.items[0].active||e.inStage&&this.items[t+1]&&this.items[t+1].active?"left":!!(0===t&&e.inStage&&this.items[i-1].active||e.inStage&&this.items[t-1]&&this.items[t-1].active)&&"right"},handleButtonEnter:function(e){var t=this;"vertical"!==this.direction&&this.items.forEach((function(i,n){e===t.itemInStage(i,n)&&(i.hover=!0)}))},handleButtonLeave:function(){"vertical"!==this.direction&&this.items.forEach((function(e){e.hover=!1}))},updateItems:function(){this.items=this.$children.filter((function(e){return"ElCarouselItem"===e.$options.name}))},resetItemPosition:function(e){var t=this;this.items.forEach((function(i,n){i.translateItem(n,t.activeIndex,e)}))},playSlides:function(){this.activeIndex0&&(e=this.items.indexOf(t[0]))}if(e=Number(e),isNaN(e)||e!==Math.floor(e))console.warn("[Element Warn][Carousel]index must be an integer.");else{var i=this.items.length,n=this.activeIndex;this.activeIndex=e<0?this.loop?i-1:0:e>=i?this.loop?0:i-1:e,n===this.activeIndex&&this.resetItemPosition(n),this.resetTimer()}},prev:function(){this.setActiveItem(this.activeIndex-1)},next:function(){this.setActiveItem(this.activeIndex+1)},handleIndicatorClick:function(e){this.activeIndex=e},handleIndicatorHover:function(e){"hover"===this.trigger&&e!==this.activeIndex&&(this.activeIndex=e)}},created:function(){var e=this;this.throttledArrowClick=Zo()(300,!0,(function(t){e.setActiveItem(t)})),this.throttledIndicatorHover=Zo()(300,(function(t){e.handleIndicatorHover(t)}))},mounted:function(){var e=this;this.updateItems(),this.$nextTick((function(){Object(Lt.addResizeListener)(e.$el,e.resetItemPosition),e.initialIndex=0&&(e.activeIndex=e.initialIndex),e.startTimer()}))},beforeDestroy:function(){this.$el&&Object(Lt.removeResizeListener)(this.$el,this.resetItemPosition),this.pauseTimer()}},Ko,[],!1,null,null,null);Qo.options.__file="packages/carousel/src/main.vue";var Jo=Qo.exports;Jo.install=function(e){e.component(Jo.name,Jo)};var el=Jo,tl={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};function il(e){var t=e.move,i=e.size,n=e.bar,r={},s="translate"+n.axis+"("+t+"%)";return r[n.size]=i,r.transform=s,r.msTransform=s,r.webkitTransform=s,r}var nl={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return tl[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,i=this.move,n=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+n.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:il({size:t,move:i,bar:n})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(fe.on)(document,"mousemove",this.mouseMoveDocumentHandler),Object(fe.on)(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var i=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(fe.off)(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(fe.off)(document,"mouseup",this.mouseUpDocumentHandler)}},rl={name:"ElScrollbar",components:{Bar:nl},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=Mi()(),i=this.wrapStyle;if(t){var n="-"+t+"px",r="margin-bottom: "+n+"; margin-right: "+n+";";Array.isArray(this.wrapStyle)?(i=Object(m.toObject)(this.wrapStyle)).marginRight=i.marginBottom=n:"string"==typeof this.wrapStyle?i+=r:i=r}var s=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),a=e("div",{ref:"wrap",style:i,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[s]]),o=void 0;return o=this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:i},[[s]])]:[a,e(nl,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(nl,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})],e("div",{class:"el-scrollbar"},o)},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,i=this.wrap;i&&(e=100*i.clientHeight/i.scrollHeight,t=100*i.clientWidth/i.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(Lt.addResizeListener)(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(Lt.removeResizeListener)(this.$refs.resize,this.update)},install:function(e){e.component(rl.name,rl)}},sl=rl,al=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"show",rawName:"v-show",value:e.ready,expression:"ready"}],staticClass:"el-carousel__item",class:{"is-active":e.active,"el-carousel__item--card":"card"===e.$parent.type,"is-in-stage":e.inStage,"is-hover":e.hover,"is-animating":e.animating},style:e.itemStyle,on:{click:e.handleItemClick}},["card"===e.$parent.type?i("div",{directives:[{name:"show",rawName:"v-show",value:!e.active,expression:"!active"}],staticClass:"el-carousel__mask"}):e._e(),e._t("default")],2)};al._withStripped=!0;var ol=r({name:"ElCarouselItem",props:{name:String,label:{type:[String,Number],default:""}},data:function(){return{hover:!1,translate:0,scale:1,active:!1,ready:!1,inStage:!1,animating:!1}},methods:{processIndex:function(e,t,i){return 0===t&&e===i-1?-1:t===i-1&&0===e?i:e=i/2?i+1:e>t+1&&e-t>=i/2?-2:e},calcCardTranslate:function(e,t){var i=this.$parent.$el.offsetWidth;return this.inStage?i*(1.17*(e-t)+1)/4:e2&&this.$parent.loop&&(e=this.processIndex(e,t,s)),"card"===n)"vertical"===r&&console.warn("[Element Warn][Carousel]vertical direction is not supported in card mode"),this.inStage=Math.round(Math.abs(e-t))<=1,this.active=e===t,this.translate=this.calcCardTranslate(e,t),this.scale=this.active?1:.83;else{this.active=e===t;var a="vertical"===r;this.translate=this.calcTranslate(e,t,a),this.scale=1}this.ready=!0},handleItemClick:function(){var e=this.$parent;if(e&&"card"===e.type){var t=e.items.indexOf(this);e.setActiveItem(t)}}},computed:{parentDirection:function(){return this.$parent.direction},itemStyle:function(){var e={transform:("vertical"===this.parentDirection?"translateY":"translateX")+"("+this.translate+"px) scale("+this.scale+")"};return Object(m.autoprefixer)(e)}},created:function(){this.$parent&&this.$parent.updateItems()},destroyed:function(){this.$parent&&this.$parent.updateItems()}},al,[],!1,null,null,null);ol.options.__file="packages/carousel/src/item.vue";var ll=ol.exports;ll.install=function(e){e.component(ll.name,ll)};var ul=ll,cl=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-collapse",attrs:{role:"tablist","aria-multiselectable":"true"}},[this._t("default")],2)};cl._withStripped=!0;var dl=r({name:"ElCollapse",componentName:"ElCollapse",props:{accordion:Boolean,value:{type:[Array,String,Number],default:function(){return[]}}},data:function(){return{activeNames:[].concat(this.value)}},provide:function(){return{collapse:this}},watch:{value:function(e){this.activeNames=[].concat(e)}},methods:{setActiveNames:function(e){e=[].concat(e);var t=this.accordion?e[0]:e;this.activeNames=e,this.$emit("input",t),this.$emit("change",t)},handleItemClick:function(e){if(this.accordion)this.setActiveNames(!this.activeNames[0]&&0!==this.activeNames[0]||this.activeNames[0]!==e.name?e.name:"");else{var t=this.activeNames.slice(0),i=t.indexOf(e.name);i>-1?t.splice(i,1):t.push(e.name),this.setActiveNames(t)}}},created:function(){this.$on("item-click",this.handleItemClick)}},cl,[],!1,null,null,null);dl.options.__file="packages/collapse/src/collapse.vue";var hl=dl.exports;hl.install=function(e){e.component(hl.name,hl)};var pl=hl,fl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-collapse-item",class:{"is-active":e.isActive,"is-disabled":e.disabled}},[i("div",{attrs:{role:"tab","aria-expanded":e.isActive,"aria-controls":"el-collapse-content-"+e.id,"aria-describedby":"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__header",class:{focusing:e.focusing,"is-active":e.isActive},attrs:{role:"button",id:"el-collapse-head-"+e.id,tabindex:e.disabled?void 0:0},on:{click:e.handleHeaderClick,keyup:function(t){return!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.stopPropagation(),e.handleEnterClick(t))},focus:e.handleFocus,blur:function(t){e.focusing=!1}}},[e._t("title",[e._v(e._s(e.title))]),i("i",{staticClass:"el-collapse-item__arrow el-icon-arrow-right",class:{"is-active":e.isActive}})],2)]),i("el-collapse-transition",[i("div",{directives:[{name:"show",rawName:"v-show",value:e.isActive,expression:"isActive"}],staticClass:"el-collapse-item__wrap",attrs:{role:"tabpanel","aria-hidden":!e.isActive,"aria-labelledby":"el-collapse-head-"+e.id,id:"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__content"},[e._t("default")],2)])])],1)};fl._withStripped=!0;var ml=r({name:"ElCollapseItem",componentName:"ElCollapseItem",mixins:[C.a],components:{ElCollapseTransition:be.a},data:function(){return{contentWrapStyle:{height:"auto",display:"block"},contentHeight:0,focusing:!1,isClick:!1,id:Object(m.generateId)()}},inject:["collapse"],props:{title:String,name:{type:[String,Number],default:function(){return this._uid}},disabled:Boolean},computed:{isActive:function(){return this.collapse.activeNames.indexOf(this.name)>-1}},methods:{handleFocus:function(){var e=this;setTimeout((function(){e.isClick?e.isClick=!1:e.focusing=!0}),50)},handleHeaderClick:function(){this.disabled||(this.dispatch("ElCollapse","item-click",this),this.focusing=!1,this.isClick=!0)},handleEnterClick:function(){this.dispatch("ElCollapse","item-click",this)}}},fl,[],!1,null,null,null);ml.options.__file="packages/collapse/src/collapse-item.vue";var vl=ml.exports;vl.install=function(e){e.component(vl.name,vl)};var gl=vl,_l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:function(){return e.toggleDropDownVisible(!1)},expression:"() => toggleDropDownVisible(false)"}],ref:"reference",class:["el-cascader",e.realSize&&"el-cascader--"+e.realSize,{"is-disabled":e.isDisabled}],on:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1},click:function(){return e.toggleDropDownVisible(!e.readonly||void 0)},keydown:e.handleKeyDown}},[i("el-input",{ref:"input",class:{"is-focus":e.dropDownVisible},attrs:{size:e.realSize,placeholder:e.placeholder,readonly:e.readonly,disabled:e.isDisabled,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.handleInput},model:{value:e.multiple?e.presentText:e.inputValue,callback:function(t){e.multiple?e.presentText:e.inputValue=t},expression:"multiple ? presentText : inputValue"}},[i("template",{slot:"suffix"},[e.clearBtnVisible?i("i",{key:"clear",staticClass:"el-input__icon el-icon-circle-close",on:{click:function(t){return t.stopPropagation(),e.handleClear(t)}}}):i("i",{key:"arrow-down",class:["el-input__icon","el-icon-arrow-down",e.dropDownVisible&&"is-reverse"],on:{click:function(t){t.stopPropagation(),e.toggleDropDownVisible()}}})])],2),e.multiple?i("div",{staticClass:"el-cascader__tags"},[e._l(e.presentTags,(function(t){return i("el-tag",{key:t.key,attrs:{type:"info",size:e.tagSize,hit:t.hitState,closable:t.closable,"disable-transitions":""},on:{close:function(i){e.deleteTag(t)}}},[i("span",[e._v(e._s(t.text))])])})),e.filterable&&!e.isDisabled?i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.inputValue,expression:"inputValue",modifiers:{trim:!0}}],staticClass:"el-cascader__search-input",attrs:{type:"text",placeholder:e.presentTags.length?"":e.placeholder},domProps:{value:e.inputValue},on:{input:[function(t){t.target.composing||(e.inputValue=t.target.value.trim())},function(t){return e.handleInput(e.inputValue,t)}],click:function(t){t.stopPropagation(),e.toggleDropDownVisible(!0)},keydown:function(t){return!("button"in t)&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:e.handleDelete(t)},blur:function(t){e.$forceUpdate()}}}):e._e()],2):e._e(),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.handleDropdownLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.dropDownVisible,expression:"dropDownVisible"}],ref:"popper",class:["el-popper","el-cascader__dropdown",e.popperClass]},[i("el-cascader-panel",{directives:[{name:"show",rawName:"v-show",value:!e.filtering,expression:"!filtering"}],ref:"panel",attrs:{options:e.options,props:e.config,border:!1,"render-label":e.$scopedSlots.default},on:{"expand-change":e.handleExpandChange,close:function(t){e.toggleDropDownVisible(!1)}},model:{value:e.checkedValue,callback:function(t){e.checkedValue=t},expression:"checkedValue"}}),e.filterable?i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.filtering,expression:"filtering"}],ref:"suggestionPanel",staticClass:"el-cascader__suggestion-panel",attrs:{tag:"ul","view-class":"el-cascader__suggestion-list"},nativeOn:{keydown:function(t){return e.handleSuggestionKeyDown(t)}}},[e.suggestions.length?e._l(e.suggestions,(function(t,n){return i("li",{key:t.uid,class:["el-cascader__suggestion-item",t.checked&&"is-checked"],attrs:{tabindex:-1},on:{click:function(t){e.handleSuggestionClick(n)}}},[i("span",[e._v(e._s(t.text))]),t.checked?i("i",{staticClass:"el-icon-check"}):e._e()])})):e._t("empty",[i("li",{staticClass:"el-cascader__empty-text"},[e._v(e._s(e.t("el.cascader.noMatch")))])])],2):e._e()],1)])],1)};_l._withStripped=!0;var bl=i(42),yl=i.n(bl),xl=i(34),kl=i.n(xl),wl=kl.a.keys,Cl={expandTrigger:{newProp:"expandTrigger",type:String},changeOnSelect:{newProp:"checkStrictly",type:Boolean},hoverThreshold:{newProp:"hoverThreshold",type:Number}},Sl={props:{placement:{type:String,default:"bottom-start"},appendToBody:A.a.props.appendToBody,visibleArrow:{type:Boolean,default:!0},arrowOffset:A.a.props.arrowOffset,offset:A.a.props.offset,boundariesPadding:A.a.props.boundariesPadding,popperOptions:A.a.props.popperOptions},methods:A.a.methods,data:A.a.data,beforeDestroy:A.a.beforeDestroy},Ol={medium:36,small:32,mini:28},Dl=r({name:"ElCascader",directives:{Clickoutside:j.a},mixins:[Sl,C.a,f.a,k.a],inject:{elForm:{default:""},elFormItem:{default:""}},components:{ElInput:h.a,ElTag:Nt.a,ElScrollbar:L.a,ElCascaderPanel:yl.a},props:{value:{},options:Array,props:Object,size:String,placeholder:{type:String,default:function(){return Object(Ir.t)("el.cascader.placeholder")}},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:Function,separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,debounce:{type:Number,default:300},beforeFilter:{type:Function,default:function(){return function(){}}},popperClass:String},data:function(){return{dropDownVisible:!1,checkedValue:this.value,inputHover:!1,inputValue:null,presentText:null,presentTags:[],checkedNodes:[],filtering:!1,suggestions:[],inputInitialHeight:0,pressDeleteCount:0}},computed:{realSize:function(){var e=(this.elFormItem||{}).elFormItemSize;return this.size||e||(this.$ELEMENT||{}).size},tagSize:function(){return["small","mini"].indexOf(this.realSize)>-1?"mini":"small"},isDisabled:function(){return this.disabled||(this.elForm||{}).disabled},config:function(){var e=this.props||{},t=this.$attrs;return Object.keys(Cl).forEach((function(i){var n=Cl[i],r=n.newProp,s=n.type,a=t[i]||t[Object(m.kebabCase)(i)];Object(He.isDef)(i)&&!Object(He.isDef)(e[r])&&(s===Boolean&&""===a&&(a=!0),e[r]=a)})),e},multiple:function(){return this.config.multiple},leafOnly:function(){return!this.config.checkStrictly},readonly:function(){return!this.filterable||this.multiple},clearBtnVisible:function(){return!(!this.clearable||this.isDisabled||this.filtering||!this.inputHover)&&(this.multiple?!!this.checkedNodes.filter((function(e){return!e.isDisabled})).length:!!this.presentText)},panel:function(){return this.$refs.panel}},watch:{disabled:function(){this.computePresentContent()},value:function(e){Object(m.isEqual)(e,this.checkedValue)||(this.checkedValue=e,this.computePresentContent())},checkedValue:function(e){var t=this.value,i=this.dropDownVisible,n=this.config,r=n.checkStrictly,s=n.multiple;Object(m.isEqual)(e,t)&&!Object(xo.isUndefined)(t)||(this.computePresentContent(),s||r||!i||this.toggleDropDownVisible(!1),this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",[e]))},options:{handler:function(){this.$nextTick(this.computePresentContent)},deep:!0},presentText:function(e){this.inputValue=e},presentTags:function(e,t){this.multiple&&(e.length||t.length)&&this.$nextTick(this.updateStyle)},filtering:function(e){this.$nextTick(this.updatePopper)}},mounted:function(){var e=this,t=this.$refs.input;t&&t.$el&&(this.inputInitialHeight=t.$el.offsetHeight||Ol[this.realSize]||40),this.isEmptyValue(this.value)||this.computePresentContent(),this.filterHandler=$()(this.debounce,(function(){var t=e.inputValue;if(t){var i=e.beforeFilter(t);i&&i.then?i.then(e.getSuggestions):!1!==i?e.getSuggestions():e.filtering=!1}else e.filtering=!1})),Object(Lt.addResizeListener)(this.$el,this.updateStyle)},beforeDestroy:function(){Object(Lt.removeResizeListener)(this.$el,this.updateStyle)},methods:{getMigratingConfig:function(){return{props:{"expand-trigger":"expand-trigger is removed, use `props.expandTrigger` instead.","change-on-select":"change-on-select is removed, use `props.checkStrictly` instead.","hover-threshold":"hover-threshold is removed, use `props.hoverThreshold` instead"},events:{"active-item-change":"active-item-change is renamed to expand-change"}}},toggleDropDownVisible:function(e){var t=this;if(!this.isDisabled){var i=this.dropDownVisible,n=this.$refs.input;(e=Object(He.isDef)(e)?e:!i)!==i&&(this.dropDownVisible=e,e&&this.$nextTick((function(){t.updatePopper(),t.panel.scrollIntoView()})),n.$refs.input.setAttribute("aria-expanded",e),this.$emit("visible-change",e))}},handleDropdownLeave:function(){this.filtering=!1,this.inputValue=this.presentText,this.doDestroy()},handleKeyDown:function(e){switch(e.keyCode){case wl.enter:this.toggleDropDownVisible();break;case wl.down:this.toggleDropDownVisible(!0),this.focusFirstNode(),e.preventDefault();break;case wl.esc:case wl.tab:this.toggleDropDownVisible(!1)}},handleFocus:function(e){this.$emit("focus",e)},handleBlur:function(e){this.$emit("blur",e)},handleInput:function(e,t){!this.dropDownVisible&&this.toggleDropDownVisible(!0),t&&t.isComposing||(e?this.filterHandler():this.filtering=!1)},handleClear:function(){this.presentText="",this.panel.clearCheckedNodes()},handleExpandChange:function(e){this.$nextTick(this.updatePopper.bind(this)),this.$emit("expand-change",e),this.$emit("active-item-change",e)},focusFirstNode:function(){var e=this;this.$nextTick((function(){var t=e.filtering,i=e.$refs,n=i.popper,r=i.suggestionPanel,s=null;t&&r?s=r.$el.querySelector(".el-cascader__suggestion-item"):s=n.querySelector(".el-cascader-menu").querySelector('.el-cascader-node[tabindex="-1"]');s&&(s.focus(),!t&&s.click())}))},computePresentContent:function(){var e=this;this.$nextTick((function(){e.config.multiple?(e.computePresentTags(),e.presentText=e.presentTags.length?" ":null):e.computePresentText()}))},isEmptyValue:function(e){var t=this.multiple,i=this.panel.config.emitPath;return!(!t&&!i)&&Object(m.isEmpty)(e)},computePresentText:function(){var e=this.checkedValue,t=this.config;if(!this.isEmptyValue(e)){var i=this.panel.getNodeByValue(e);if(i&&(t.checkStrictly||i.isLeaf))return void(this.presentText=i.getText(this.showAllLevels,this.separator))}this.presentText=null},computePresentTags:function(){var e=this.isDisabled,t=this.leafOnly,i=this.showAllLevels,n=this.separator,r=this.collapseTags,s=this.getCheckedNodes(t),a=[],o=function(t){return{node:t,key:t.uid,text:t.getText(i,n),hitState:!1,closable:!e&&!t.isDisabled}};if(s.length){var l=s[0],u=s.slice(1),c=u.length;a.push(o(l)),c&&(r?a.push({key:-1,text:"+ "+c,closable:!1}):u.forEach((function(e){return a.push(o(e))})))}this.checkedNodes=s,this.presentTags=a},getSuggestions:function(){var e=this,t=this.filterMethod;Object(xo.isFunction)(t)||(t=function(e,t){return e.text.includes(t)});var i=this.panel.getFlattedNodes(this.leafOnly).filter((function(i){return!i.isDisabled&&(i.text=i.getText(e.showAllLevels,e.separator)||"",t(i,e.inputValue))}));this.multiple?this.presentTags.forEach((function(e){e.hitState=!1})):i.forEach((function(t){t.checked=Object(m.isEqual)(e.checkedValue,t.getValueByOption())})),this.filtering=!0,this.suggestions=i,this.$nextTick(this.updatePopper)},handleSuggestionKeyDown:function(e){var t=e.keyCode,i=e.target;switch(t){case wl.enter:i.click();break;case wl.up:var n=i.previousElementSibling;n&&n.focus();break;case wl.down:var r=i.nextElementSibling;r&&r.focus();break;case wl.esc:case wl.tab:this.toggleDropDownVisible(!1)}},handleDelete:function(){var e=this.inputValue,t=this.pressDeleteCount,i=this.presentTags,n=i[i.length-1];this.pressDeleteCount=e?0:t+1,n&&this.pressDeleteCount&&(n.hitState?this.deleteTag(n):n.hitState=!0)},handleSuggestionClick:function(e){var t=this.multiple,i=this.suggestions[e];if(t){var n=i.checked;i.doCheck(!n),this.panel.calculateMultiCheckedValue()}else this.checkedValue=i.getValueByOption(),this.toggleDropDownVisible(!1)},deleteTag:function(e){var t=this.checkedValue,i=e.node.getValueByOption(),n=t.find((function(e){return Object(m.isEqual)(e,i)}));this.checkedValue=t.filter((function(e){return!Object(m.isEqual)(e,i)})),this.$emit("remove-tag",n)},updateStyle:function(){var e=this.$el,t=this.inputInitialHeight;if(!this.$isServer&&e){var i=this.$refs.suggestionPanel,n=e.querySelector(".el-input__inner");if(n){var r=e.querySelector(".el-cascader__tags"),s=null;if(i&&(s=i.$el))s.querySelector(".el-cascader__suggestion-list").style.minWidth=n.offsetWidth+"px";if(r){var a=Math.round(r.getBoundingClientRect().height),o=Math.max(a+6,t)+"px";n.style.height=o,this.dropDownVisible&&this.updatePopper()}}}},getCheckedNodes:function(e){return this.panel.getCheckedNodes(e)}}},_l,[],!1,null,null,null);Dl.options.__file="packages/cascader/src/cascader.vue";var El=Dl.exports;El.install=function(e){e.component(El.name,El)};var Tl=El,$l=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.hide,expression:"hide"}],class:["el-color-picker",e.colorDisabled?"is-disabled":"",e.colorSize?"el-color-picker--"+e.colorSize:""]},[e.colorDisabled?i("div",{staticClass:"el-color-picker__mask"}):e._e(),i("div",{staticClass:"el-color-picker__trigger",on:{click:e.handleTrigger}},[i("span",{staticClass:"el-color-picker__color",class:{"is-alpha":e.showAlpha}},[i("span",{staticClass:"el-color-picker__color-inner",style:{backgroundColor:e.displayedColor}}),e.value||e.showPanelColor?e._e():i("span",{staticClass:"el-color-picker__empty el-icon-close"})]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.value||e.showPanelColor,expression:"value || showPanelColor"}],staticClass:"el-color-picker__icon el-icon-arrow-down"})]),i("picker-dropdown",{ref:"dropdown",class:["el-color-picker__panel",e.popperClass||""],attrs:{color:e.color,"show-alpha":e.showAlpha,predefine:e.predefine},on:{pick:e.confirmValue,clear:e.clearValue},model:{value:e.showPicker,callback:function(t){e.showPicker=t},expression:"showPicker"}})],1)};$l._withStripped=!0;var Pl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var jl=function(e,t,i){return[e,t*i/((e=(2-t)*i)<1?e:2-e)||0,e/2]},Ml=function(e,t){var i;"string"==typeof(i=e)&&-1!==i.indexOf(".")&&1===parseFloat(i)&&(e="100%");var n=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},Il={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},Al={A:10,B:11,C:12,D:13,E:14,F:15},Nl=function(e){return 2===e.length?16*(Al[e[0].toUpperCase()]||+e[0])+(Al[e[1].toUpperCase()]||+e[1]):Al[e[1].toUpperCase()]||+e[1]},Ll=function(e,t,i){e=Ml(e,255),t=Ml(t,255),i=Ml(i,255);var n,r=Math.max(e,t,i),s=Math.min(e,t,i),a=void 0,o=r,l=r-s;if(n=0===r?0:l/r,r===s)a=0;else{switch(r){case e:a=(t-i)/l+(t2?parseFloat(e):parseInt(e,10)}));if(4===n.length?this._alpha=Math.floor(100*parseFloat(n[3])):3===n.length&&(this._alpha=100),n.length>=3){var r=function(e,t,i){i/=100;var n=t/=100,r=Math.max(i,.01);return t*=(i*=2)<=1?i:2-i,n*=r<=1?r:2-r,{h:e,s:100*(0===i?2*n/(r+n):2*t/(i+t)),v:100*((i+t)/2)}}(n[0],n[1],n[2]);i(r.h,r.s,r.v)}}else if(-1!==e.indexOf("hsv")){var s=e.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter((function(e){return""!==e})).map((function(e,t){return t>2?parseFloat(e):parseInt(e,10)}));4===s.length?this._alpha=Math.floor(100*parseFloat(s[3])):3===s.length&&(this._alpha=100),s.length>=3&&i(s[0],s[1],s[2])}else if(-1!==e.indexOf("rgb")){var a=e.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter((function(e){return""!==e})).map((function(e,t){return t>2?parseFloat(e):parseInt(e,10)}));if(4===a.length?this._alpha=Math.floor(100*parseFloat(a[3])):3===a.length&&(this._alpha=100),a.length>=3){var o=Ll(a[0],a[1],a[2]);i(o.h,o.s,o.v)}}else if(-1!==e.indexOf("#")){var l=e.replace("#","").trim();if(!/^(?:[0-9a-fA-F]{3}){1,2}|[0-9a-fA-F]{8}$/.test(l))return;var u=void 0,c=void 0,d=void 0;3===l.length?(u=Nl(l[0]+l[0]),c=Nl(l[1]+l[1]),d=Nl(l[2]+l[2])):6!==l.length&&8!==l.length||(u=Nl(l.substring(0,2)),c=Nl(l.substring(2,4)),d=Nl(l.substring(4,6))),8===l.length?this._alpha=Math.floor(Nl(l.substring(6))/255*100):3!==l.length&&6!==l.length||(this._alpha=100);var h=Ll(u,c,d);i(h.h,h.s,h.v)}},e.prototype.compare=function(e){return Math.abs(e._hue-this._hue)<2&&Math.abs(e._saturation-this._saturation)<1&&Math.abs(e._value-this._value)<1&&Math.abs(e._alpha-this._alpha)<1},e.prototype.doOnChange=function(){var e=this._hue,t=this._saturation,i=this._value,n=this._alpha,r=this.format;if(this.enableAlpha)switch(r){case"hsl":var s=jl(e,t/100,i/100);this.value="hsla("+e+", "+Math.round(100*s[1])+"%, "+Math.round(100*s[2])+"%, "+n/100+")";break;case"hsv":this.value="hsva("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%, "+n/100+")";break;default:var a=Fl(e,t,i),o=a.r,l=a.g,u=a.b;this.value="rgba("+o+", "+l+", "+u+", "+n/100+")"}else switch(r){case"hsl":var c=jl(e,t/100,i/100);this.value="hsl("+e+", "+Math.round(100*c[1])+"%, "+Math.round(100*c[2])+"%)";break;case"hsv":this.value="hsv("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%)";break;case"rgb":var d=Fl(e,t,i),h=d.r,p=d.g,f=d.b;this.value="rgb("+h+", "+p+", "+f+")";break;default:this.value=function(e){var t=e.r,i=e.g,n=e.b,r=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),i=e%16;return""+(Il[t]||t)+(Il[i]||i)};return isNaN(t)||isNaN(i)||isNaN(n)?"":"#"+r(t)+r(i)+r(n)}(Fl(e,t,i))}},e}(),zl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-color-dropdown"},[i("div",{staticClass:"el-color-dropdown__main-wrapper"},[i("hue-slider",{ref:"hue",staticStyle:{float:"right"},attrs:{color:e.color,vertical:""}}),i("sv-panel",{ref:"sl",attrs:{color:e.color}})],1),e.showAlpha?i("alpha-slider",{ref:"alpha",attrs:{color:e.color}}):e._e(),e.predefine?i("predefine",{attrs:{color:e.color,colors:e.predefine}}):e._e(),i("div",{staticClass:"el-color-dropdown__btns"},[i("span",{staticClass:"el-color-dropdown__value"},[i("el-input",{attrs:{"validate-event":!1,size:"mini"},on:{blur:e.handleConfirm},nativeOn:{keyup:function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleConfirm(t)}},model:{value:e.customInput,callback:function(t){e.customInput=t},expression:"customInput"}})],1),i("el-button",{staticClass:"el-color-dropdown__link-btn",attrs:{size:"mini",type:"text"},on:{click:function(t){e.$emit("clear")}}},[e._v("\n "+e._s(e.t("el.colorpicker.clear"))+"\n ")]),i("el-button",{staticClass:"el-color-dropdown__btn",attrs:{plain:"",size:"mini"},on:{click:e.confirmValue}},[e._v("\n "+e._s(e.t("el.colorpicker.confirm"))+"\n ")])],1)],1)])};zl._withStripped=!0;var Rl=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-svpanel",style:{backgroundColor:this.background}},[t("div",{staticClass:"el-color-svpanel__white"}),t("div",{staticClass:"el-color-svpanel__black"}),t("div",{staticClass:"el-color-svpanel__cursor",style:{top:this.cursorTop+"px",left:this.cursorLeft+"px"}},[t("div")])])};Rl._withStripped=!0;var Bl=!1,Hl=function(e,t){if(!di.a.prototype.$isServer){var i=function(e){t.drag&&t.drag(e)},n=function e(n){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e),document.onselectstart=null,document.ondragstart=null,Bl=!1,t.end&&t.end(n)};e.addEventListener("mousedown",(function(e){Bl||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},document.addEventListener("mousemove",i),document.addEventListener("mouseup",n),Bl=!0,t.start&&t.start(e))}))}},Wl=r({name:"el-sl-panel",props:{color:{required:!0}},computed:{colorValue:function(){return{hue:this.color.get("hue"),value:this.color.get("value")}}},watch:{colorValue:function(){this.update()}},methods:{update:function(){var e=this.color.get("saturation"),t=this.color.get("value"),i=this.$el,n=i.clientWidth,r=i.clientHeight;this.cursorLeft=e*n/100,this.cursorTop=(100-t)*r/100,this.background="hsl("+this.color.get("hue")+", 100%, 50%)"},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=e.clientX-t.left,n=e.clientY-t.top;i=Math.max(0,i),i=Math.min(i,t.width),n=Math.max(0,n),n=Math.min(n,t.height),this.cursorLeft=i,this.cursorTop=n,this.color.set({saturation:i/t.width*100,value:100-n/t.height*100})}},mounted:function(){var e=this;Hl(this.$el,{drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}}),this.update()},data:function(){return{cursorTop:0,cursorLeft:0,background:"hsl(0, 100%, 50%)"}}},Rl,[],!1,null,null,null);Wl.options.__file="packages/color-picker/src/components/sv-panel.vue";var ql=Wl.exports,Ul=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-hue-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-hue-slider__bar",on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-hue-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Ul._withStripped=!0;var Gl=r({name:"el-color-hue-slider",props:{color:{required:!0},vertical:Boolean},data:function(){return{thumbLeft:0,thumbTop:0}},computed:{hueValue:function(){return this.color.get("hue")}},watch:{hueValue:function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb,n=void 0;if(this.vertical){var r=e.clientY-t.top;r=Math.min(r,t.height-i.offsetHeight/2),r=Math.max(i.offsetHeight/2,r),n=Math.round((r-i.offsetHeight/2)/(t.height-i.offsetHeight)*360)}else{var s=e.clientX-t.left;s=Math.min(s,t.width-i.offsetWidth/2),s=Math.max(i.offsetWidth/2,s),n=Math.round((s-i.offsetWidth/2)/(t.width-i.offsetWidth)*360)}this.color.set("hue",n)},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/360)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/360)},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop()}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Hl(i,r),Hl(n,r),this.update()}},Ul,[],!1,null,null,null);Gl.options.__file="packages/color-picker/src/components/hue-slider.vue";var Yl=Gl.exports,Kl=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-alpha-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-alpha-slider__bar",style:{background:this.background},on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-alpha-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Kl._withStripped=!0;var Xl=r({name:"el-color-alpha-slider",props:{color:{required:!0},vertical:Boolean},watch:{"color._alpha":function(){this.update()},"color.value":function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb;if(this.vertical){var n=e.clientY-t.top;n=Math.max(i.offsetHeight/2,n),n=Math.min(n,t.height-i.offsetHeight/2),this.color.set("alpha",Math.round((n-i.offsetHeight/2)/(t.height-i.offsetHeight)*100))}else{var r=e.clientX-t.left;r=Math.max(i.offsetWidth/2,r),r=Math.min(r,t.width-i.offsetWidth/2),this.color.set("alpha",Math.round((r-i.offsetWidth/2)/(t.width-i.offsetWidth)*100))}},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/100)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/100)},getBackground:function(){if(this.color&&this.color.value){var e=this.color.toRgb(),t=e.r,i=e.g,n=e.b;return"linear-gradient(to right, rgba("+t+", "+i+", "+n+", 0) 0%, rgba("+t+", "+i+", "+n+", 1) 100%)"}return null},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop(),this.background=this.getBackground()}},data:function(){return{thumbLeft:0,thumbTop:0,background:null}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Hl(i,r),Hl(n,r),this.update()}},Kl,[],!1,null,null,null);Xl.options.__file="packages/color-picker/src/components/alpha-slider.vue";var Zl=Xl.exports,Ql=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-color-predefine"},[i("div",{staticClass:"el-color-predefine__colors"},e._l(e.rgbaColors,(function(t,n){return i("div",{key:e.colors[n],staticClass:"el-color-predefine__color-selector",class:{selected:t.selected,"is-alpha":t._alpha<100},on:{click:function(t){e.handleSelect(n)}}},[i("div",{style:{"background-color":t.value}})])})),0)])};Ql._withStripped=!0;var Jl=r({props:{colors:{type:Array,required:!0},color:{required:!0}},data:function(){return{rgbaColors:this.parseColors(this.colors,this.color)}},methods:{handleSelect:function(e){this.color.fromString(this.colors[e])},parseColors:function(e,t){return e.map((function(e){var i=new Vl;return i.enableAlpha=!0,i.format="rgba",i.fromString(e),i.selected=i.value===t.value,i}))}},watch:{"$parent.currentColor":function(e){var t=new Vl;t.fromString(e),this.rgbaColors.forEach((function(e){e.selected=t.compare(e)}))},colors:function(e){this.rgbaColors=this.parseColors(e,this.color)},color:function(e){this.rgbaColors=this.parseColors(this.colors,e)}}},Ql,[],!1,null,null,null);Jl.options.__file="packages/color-picker/src/components/predefine.vue";var eu=Jl.exports,tu=r({name:"el-color-picker-dropdown",mixins:[A.a,f.a],components:{SvPanel:ql,HueSlider:Yl,AlphaSlider:Zl,ElInput:h.a,ElButton:U.a,Predefine:eu},props:{color:{required:!0},showAlpha:Boolean,predefine:Array},data:function(){return{customInput:""}},computed:{currentColor:function(){var e=this.$parent;return e.value||e.showPanelColor?e.color.value:""}},methods:{confirmValue:function(){this.$emit("pick")},handleConfirm:function(){this.color.fromString(this.customInput)}},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$el},watch:{showPopper:function(e){var t=this;!0===e&&this.$nextTick((function(){var e=t.$refs,i=e.sl,n=e.hue,r=e.alpha;i&&i.update(),n&&n.update(),r&&r.update()}))},currentColor:{immediate:!0,handler:function(e){this.customInput=e}}}},zl,[],!1,null,null,null);tu.options.__file="packages/color-picker/src/components/picker-dropdown.vue";var iu=tu.exports,nu=r({name:"ElColorPicker",mixins:[C.a],props:{value:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:String,popperClass:String,predefine:Array},inject:{elForm:{default:""},elFormItem:{default:""}},directives:{Clickoutside:j.a},computed:{displayedColor:function(){return this.value||this.showPanelColor?this.displayedRgb(this.color,this.showAlpha):"transparent"},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},colorSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},colorDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){e?e&&e!==this.color.value&&this.color.fromString(e):this.showPanelColor=!1},color:{deep:!0,handler:function(){this.showPanelColor=!0}},displayedColor:function(e){if(this.showPicker){var t=new Vl({enableAlpha:this.showAlpha,format:this.colorFormat});t.fromString(this.value),e!==this.displayedRgb(t,this.showAlpha)&&this.$emit("active-change",e)}}},methods:{handleTrigger:function(){this.colorDisabled||(this.showPicker=!this.showPicker)},confirmValue:function(){var e=this.color.value;this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",e),this.showPicker=!1},clearValue:function(){this.$emit("input",null),this.$emit("change",null),null!==this.value&&this.dispatch("ElFormItem","el.form.change",null),this.showPanelColor=!1,this.showPicker=!1,this.resetColor()},hide:function(){this.showPicker=!1,this.resetColor()},resetColor:function(){var e=this;this.$nextTick((function(t){e.value?e.color.fromString(e.value):e.showPanelColor=!1}))},displayedRgb:function(e,t){if(!(e instanceof Vl))throw Error("color should be instance of Color Class");var i=e.toRgb(),n=i.r,r=i.g,s=i.b;return t?"rgba("+n+", "+r+", "+s+", "+e.get("alpha")/100+")":"rgb("+n+", "+r+", "+s+")"}},mounted:function(){var e=this.value;e&&this.color.fromString(e),this.popperElm=this.$refs.dropdown.$el},data:function(){return{color:new Vl({enableAlpha:this.showAlpha,format:this.colorFormat}),showPicker:!1,showPanelColor:!1}},components:{PickerDropdown:iu}},$l,[],!1,null,null,null);nu.options.__file="packages/color-picker/src/main.vue";var ru=nu.exports;ru.install=function(e){e.component(ru.name,ru)};var su=ru,au=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer"},[i("transfer-panel",e._b({ref:"leftPanel",attrs:{data:e.sourceData,title:e.titles[0]||e.t("el.transfer.titles.0"),"default-checked":e.leftDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onSourceCheckedChange}},"transfer-panel",e.$props,!1),[e._t("left-footer")],2),i("div",{staticClass:"el-transfer__buttons"},[i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.rightChecked.length},nativeOn:{click:function(t){return e.addToLeft(t)}}},[i("i",{staticClass:"el-icon-arrow-left"}),void 0!==e.buttonTexts[0]?i("span",[e._v(e._s(e.buttonTexts[0]))]):e._e()]),i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.leftChecked.length},nativeOn:{click:function(t){return e.addToRight(t)}}},[void 0!==e.buttonTexts[1]?i("span",[e._v(e._s(e.buttonTexts[1]))]):e._e(),i("i",{staticClass:"el-icon-arrow-right"})])],1),i("transfer-panel",e._b({ref:"rightPanel",attrs:{data:e.targetData,title:e.titles[1]||e.t("el.transfer.titles.1"),"default-checked":e.rightDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onTargetCheckedChange}},"transfer-panel",e.$props,!1),[e._t("right-footer")],2)],1)};au._withStripped=!0;var ou=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer-panel"},[i("p",{staticClass:"el-transfer-panel__header"},[i("el-checkbox",{attrs:{indeterminate:e.isIndeterminate},on:{change:e.handleAllCheckedChange},model:{value:e.allChecked,callback:function(t){e.allChecked=t},expression:"allChecked"}},[e._v("\n "+e._s(e.title)+"\n "),i("span",[e._v(e._s(e.checkedSummary))])])],1),i("div",{class:["el-transfer-panel__body",e.hasFooter?"is-with-footer":""]},[e.filterable?i("el-input",{staticClass:"el-transfer-panel__filter",attrs:{size:"small",placeholder:e.placeholder},nativeOn:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1}},model:{value:e.query,callback:function(t){e.query=t},expression:"query"}},[i("i",{class:["el-input__icon","el-icon-"+e.inputIcon],attrs:{slot:"prefix"},on:{click:e.clearQuery},slot:"prefix"})]):e._e(),i("el-checkbox-group",{directives:[{name:"show",rawName:"v-show",value:!e.hasNoMatch&&e.data.length>0,expression:"!hasNoMatch && data.length > 0"}],staticClass:"el-transfer-panel__list",class:{"is-filterable":e.filterable},model:{value:e.checked,callback:function(t){e.checked=t},expression:"checked"}},e._l(e.filteredData,(function(t){return i("el-checkbox",{key:t[e.keyProp],staticClass:"el-transfer-panel__item",attrs:{label:t[e.keyProp],disabled:t[e.disabledProp]}},[i("option-content",{attrs:{option:t}})],1)})),1),i("p",{directives:[{name:"show",rawName:"v-show",value:e.hasNoMatch,expression:"hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noMatch")))]),i("p",{directives:[{name:"show",rawName:"v-show",value:0===e.data.length&&!e.hasNoMatch,expression:"data.length === 0 && !hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noData")))])],1),e.hasFooter?i("p",{staticClass:"el-transfer-panel__footer"},[e._t("default")],2):e._e()])};ou._withStripped=!0;var lu=r({mixins:[f.a],name:"ElTransferPanel",componentName:"ElTransferPanel",components:{ElCheckboxGroup:Wi.a,ElCheckbox:ri.a,ElInput:h.a,OptionContent:{props:{option:Object},render:function(e){var t=function e(t){return"ElTransferPanel"===t.$options.componentName?t:t.$parent?e(t.$parent):t}(this),i=t.$parent||t;return t.renderContent?t.renderContent(e,this.option):i.$scopedSlots.default?i.$scopedSlots.default({option:this.option}):e("span",[this.option[t.labelProp]||this.option[t.keyProp]])}}},props:{data:{type:Array,default:function(){return[]}},renderContent:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},data:function(){return{checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}},watch:{checked:function(e,t){if(this.updateAllChecked(),this.checkChangeByUser){var i=e.concat(t).filter((function(i){return-1===e.indexOf(i)||-1===t.indexOf(i)}));this.$emit("checked-change",e,i)}else this.$emit("checked-change",e),this.checkChangeByUser=!0},data:function(){var e=this,t=[],i=this.filteredData.map((function(t){return t[e.keyProp]}));this.checked.forEach((function(e){i.indexOf(e)>-1&&t.push(e)})),this.checkChangeByUser=!1,this.checked=t},checkableData:function(){this.updateAllChecked()},defaultChecked:{immediate:!0,handler:function(e,t){var i=this;if(!t||e.length!==t.length||!e.every((function(e){return t.indexOf(e)>-1}))){var n=[],r=this.checkableData.map((function(e){return e[i.keyProp]}));e.forEach((function(e){r.indexOf(e)>-1&&n.push(e)})),this.checkChangeByUser=!1,this.checked=n}}}},computed:{filteredData:function(){var e=this;return this.data.filter((function(t){return"function"==typeof e.filterMethod?e.filterMethod(e.query,t):(t[e.labelProp]||t[e.keyProp].toString()).toLowerCase().indexOf(e.query.toLowerCase())>-1}))},checkableData:function(){var e=this;return this.filteredData.filter((function(t){return!t[e.disabledProp]}))},checkedSummary:function(){var e=this.checked.length,t=this.data.length,i=this.format,n=i.noChecked,r=i.hasChecked;return n&&r?e>0?r.replace(/\${checked}/g,e).replace(/\${total}/g,t):n.replace(/\${total}/g,t):e+"/"+t},isIndeterminate:function(){var e=this.checked.length;return e>0&&e0&&0===this.filteredData.length},inputIcon:function(){return this.query.length>0&&this.inputHover?"circle-close":"search"},labelProp:function(){return this.props.label||"label"},keyProp:function(){return this.props.key||"key"},disabledProp:function(){return this.props.disabled||"disabled"},hasFooter:function(){return!!this.$slots.default}},methods:{updateAllChecked:function(){var e=this,t=this.checkableData.map((function(t){return t[e.keyProp]}));this.allChecked=t.length>0&&t.every((function(t){return e.checked.indexOf(t)>-1}))},handleAllCheckedChange:function(e){var t=this;this.checked=e?this.checkableData.map((function(e){return e[t.keyProp]})):[]},clearQuery:function(){"circle-close"===this.inputIcon&&(this.query="")}}},ou,[],!1,null,null,null);lu.options.__file="packages/transfer/src/transfer-panel.vue";var uu=lu.exports,cu=r({name:"ElTransfer",mixins:[C.a,f.a,k.a],components:{TransferPanel:uu,ElButton:U.a},props:{data:{type:Array,default:function(){return[]}},titles:{type:Array,default:function(){return[]}},buttonTexts:{type:Array,default:function(){return[]}},filterPlaceholder:{type:String,default:""},filterMethod:Function,leftDefaultChecked:{type:Array,default:function(){return[]}},rightDefaultChecked:{type:Array,default:function(){return[]}},renderContent:Function,value:{type:Array,default:function(){return[]}},format:{type:Object,default:function(){return{}}},filterable:Boolean,props:{type:Object,default:function(){return{label:"label",key:"key",disabled:"disabled"}}},targetOrder:{type:String,default:"original"}},data:function(){return{leftChecked:[],rightChecked:[]}},computed:{dataObj:function(){var e=this.props.key;return this.data.reduce((function(t,i){return(t[i[e]]=i)&&t}),{})},sourceData:function(){var e=this;return this.data.filter((function(t){return-1===e.value.indexOf(t[e.props.key])}))},targetData:function(){var e=this;return"original"===this.targetOrder?this.data.filter((function(t){return e.value.indexOf(t[e.props.key])>-1})):this.value.reduce((function(t,i){var n=e.dataObj[i];return n&&t.push(n),t}),[])},hasButtonTexts:function(){return 2===this.buttonTexts.length}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}},methods:{getMigratingConfig:function(){return{props:{"footer-format":"footer-format is renamed to format."}}},onSourceCheckedChange:function(e,t){this.leftChecked=e,void 0!==t&&this.$emit("left-check-change",e,t)},onTargetCheckedChange:function(e,t){this.rightChecked=e,void 0!==t&&this.$emit("right-check-change",e,t)},addToLeft:function(){var e=this.value.slice();this.rightChecked.forEach((function(t){var i=e.indexOf(t);i>-1&&e.splice(i,1)})),this.$emit("input",e),this.$emit("change",e,"left",this.rightChecked)},addToRight:function(){var e=this,t=this.value.slice(),i=[],n=this.props.key;this.data.forEach((function(t){var r=t[n];e.leftChecked.indexOf(r)>-1&&-1===e.value.indexOf(r)&&i.push(r)})),t="unshift"===this.targetOrder?i.concat(t):t.concat(i),this.$emit("input",t),this.$emit("change",t,"right",this.leftChecked)},clearQuery:function(e){"left"===e?this.$refs.leftPanel.query="":"right"===e&&(this.$refs.rightPanel.query="")}}},au,[],!1,null,null,null);cu.options.__file="packages/transfer/src/main.vue";var du=cu.exports;du.install=function(e){e.component(du.name,du)};var hu=du,pu=function(){var e=this.$createElement;return(this._self._c||e)("section",{staticClass:"el-container",class:{"is-vertical":this.isVertical}},[this._t("default")],2)};pu._withStripped=!0;var fu=r({name:"ElContainer",componentName:"ElContainer",props:{direction:String},computed:{isVertical:function(){return"vertical"===this.direction||"horizontal"!==this.direction&&(!(!this.$slots||!this.$slots.default)&&this.$slots.default.some((function(e){var t=e.componentOptions&&e.componentOptions.tag;return"el-header"===t||"el-footer"===t})))}}},pu,[],!1,null,null,null);fu.options.__file="packages/container/src/main.vue";var mu=fu.exports;mu.install=function(e){e.component(mu.name,mu)};var vu=mu,gu=function(){var e=this.$createElement;return(this._self._c||e)("header",{staticClass:"el-header",style:{height:this.height}},[this._t("default")],2)};gu._withStripped=!0;var _u=r({name:"ElHeader",componentName:"ElHeader",props:{height:{type:String,default:"60px"}}},gu,[],!1,null,null,null);_u.options.__file="packages/header/src/main.vue";var bu=_u.exports;bu.install=function(e){e.component(bu.name,bu)};var yu=bu,xu=function(){var e=this.$createElement;return(this._self._c||e)("aside",{staticClass:"el-aside",style:{width:this.width}},[this._t("default")],2)};xu._withStripped=!0;var ku=r({name:"ElAside",componentName:"ElAside",props:{width:{type:String,default:"300px"}}},xu,[],!1,null,null,null);ku.options.__file="packages/aside/src/main.vue";var wu=ku.exports;wu.install=function(e){e.component(wu.name,wu)};var Cu=wu,Su=function(){var e=this.$createElement;return(this._self._c||e)("main",{staticClass:"el-main"},[this._t("default")],2)};Su._withStripped=!0;var Ou=r({name:"ElMain",componentName:"ElMain"},Su,[],!1,null,null,null);Ou.options.__file="packages/main/src/main.vue";var Du=Ou.exports;Du.install=function(e){e.component(Du.name,Du)};var Eu=Du,Tu=function(){var e=this.$createElement;return(this._self._c||e)("footer",{staticClass:"el-footer",style:{height:this.height}},[this._t("default")],2)};Tu._withStripped=!0;var $u=r({name:"ElFooter",componentName:"ElFooter",props:{height:{type:String,default:"60px"}}},Tu,[],!1,null,null,null);$u.options.__file="packages/footer/src/main.vue";var Pu=$u.exports;Pu.install=function(e){e.component(Pu.name,Pu)};var ju=Pu,Mu=r({name:"ElTimeline",props:{reverse:{type:Boolean,default:!1}},provide:function(){return{timeline:this}},render:function(){var e=arguments[0],t=this.reverse,i={"el-timeline":!0,"is-reverse":t},n=this.$slots.default||[];return t&&(n=n.reverse()),e("ul",{class:i},[n])}},void 0,void 0,!1,null,null,null);Mu.options.__file="packages/timeline/src/main.vue";var Iu=Mu.exports;Iu.install=function(e){e.component(Iu.name,Iu)};var Au=Iu,Nu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-timeline-item"},[i("div",{staticClass:"el-timeline-item__tail"}),e.$slots.dot?e._e():i("div",{staticClass:"el-timeline-item__node",class:["el-timeline-item__node--"+(e.size||""),"el-timeline-item__node--"+(e.type||"")],style:{backgroundColor:e.color}},[e.icon?i("i",{staticClass:"el-timeline-item__icon",class:e.icon}):e._e()]),e.$slots.dot?i("div",{staticClass:"el-timeline-item__dot"},[e._t("dot")],2):e._e(),i("div",{staticClass:"el-timeline-item__wrapper"},[e.hideTimestamp||"top"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-top"},[e._v("\n "+e._s(e.timestamp)+"\n ")]),i("div",{staticClass:"el-timeline-item__content"},[e._t("default")],2),e.hideTimestamp||"bottom"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-bottom"},[e._v("\n "+e._s(e.timestamp)+"\n ")])])])};Nu._withStripped=!0;var Lu=r({name:"ElTimelineItem",inject:["timeline"],props:{timestamp:String,hideTimestamp:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},type:String,color:String,size:{type:String,default:"normal"},icon:String}},Nu,[],!1,null,null,null);Lu.options.__file="packages/timeline/src/item.vue";var Fu=Lu.exports;Fu.install=function(e){e.component(Fu.name,Fu)};var Vu=Fu,zu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",e._b({class:["el-link",e.type?"el-link--"+e.type:"",e.disabled&&"is-disabled",e.underline&&!e.disabled&&"is-underline"],attrs:{href:e.disabled?null:e.href},on:{click:e.handleClick}},"a",e.$attrs,!1),[e.icon?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",{staticClass:"el-link--inner"},[e._t("default")],2):e._e(),e.$slots.icon?[e.$slots.icon?e._t("icon"):e._e()]:e._e()],2)};zu._withStripped=!0;var Ru=r({name:"ElLink",props:{type:{type:String,default:"default"},underline:{type:Boolean,default:!0},disabled:Boolean,href:String,icon:String},methods:{handleClick:function(e){this.disabled||this.href||this.$emit("click",e)}}},zu,[],!1,null,null,null);Ru.options.__file="packages/link/src/main.vue";var Bu=Ru.exports;Bu.install=function(e){e.component(Bu.name,Bu)};var Hu=Bu,Wu=function(e,t){var i=t._c;return i("div",t._g(t._b({class:[t.data.staticClass,"el-divider","el-divider--"+t.props.direction]},"div",t.data.attrs,!1),t.listeners),[t.slots().default&&"vertical"!==t.props.direction?i("div",{class:["el-divider__text","is-"+t.props.contentPosition]},[t._t("default")],2):t._e()])};Wu._withStripped=!0;var qu=r({name:"ElDivider",props:{direction:{type:String,default:"horizontal",validator:function(e){return-1!==["horizontal","vertical"].indexOf(e)}},contentPosition:{type:String,default:"center",validator:function(e){return-1!==["left","center","right"].indexOf(e)}}}},Wu,[],!0,null,null,null);qu.options.__file="packages/divider/src/main.vue";var Uu=qu.exports;Uu.install=function(e){e.component(Uu.name,Uu)};var Gu=Uu,Yu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-image"},[e.loading?e._t("placeholder",[i("div",{staticClass:"el-image__placeholder"})]):e.error?e._t("error",[i("div",{staticClass:"el-image__error"},[e._v(e._s(e.t("el.image.error")))])]):i("img",e._g(e._b({staticClass:"el-image__inner",class:{"el-image__inner--center":e.alignCenter,"el-image__preview":e.preview},style:e.imageStyle,attrs:{src:e.src},on:{click:e.clickHandler}},"img",e.$attrs,!1),e.$listeners)),e.preview?[e.showViewer?i("image-viewer",{attrs:{"z-index":e.zIndex,"initial-index":e.imageIndex,"on-close":e.closeViewer,"url-list":e.previewSrcList}}):e._e()]:e._e()],2)};Yu._withStripped=!0;var Ku=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"viewer-fade"}},[i("div",{ref:"el-image-viewer__wrapper",staticClass:"el-image-viewer__wrapper",style:{"z-index":e.viewerZIndex},attrs:{tabindex:"-1"}},[i("div",{staticClass:"el-image-viewer__mask",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleMaskClick(t)}}}),i("span",{staticClass:"el-image-viewer__btn el-image-viewer__close",on:{click:e.hide}},[i("i",{staticClass:"el-icon-close"})]),e.isSingle?e._e():[i("span",{staticClass:"el-image-viewer__btn el-image-viewer__prev",class:{"is-disabled":!e.infinite&&e.isFirst},on:{click:e.prev}},[i("i",{staticClass:"el-icon-arrow-left"})]),i("span",{staticClass:"el-image-viewer__btn el-image-viewer__next",class:{"is-disabled":!e.infinite&&e.isLast},on:{click:e.next}},[i("i",{staticClass:"el-icon-arrow-right"})])],i("div",{staticClass:"el-image-viewer__btn el-image-viewer__actions"},[i("div",{staticClass:"el-image-viewer__actions__inner"},[i("i",{staticClass:"el-icon-zoom-out",on:{click:function(t){e.handleActions("zoomOut")}}}),i("i",{staticClass:"el-icon-zoom-in",on:{click:function(t){e.handleActions("zoomIn")}}}),i("i",{staticClass:"el-image-viewer__actions__divider"}),i("i",{class:e.mode.icon,on:{click:e.toggleMode}}),i("i",{staticClass:"el-image-viewer__actions__divider"}),i("i",{staticClass:"el-icon-refresh-left",on:{click:function(t){e.handleActions("anticlocelise")}}}),i("i",{staticClass:"el-icon-refresh-right",on:{click:function(t){e.handleActions("clocelise")}}})])]),i("div",{staticClass:"el-image-viewer__canvas"},e._l(e.urlList,(function(t,n){return n===e.index?i("img",{key:t,ref:"img",refInFor:!0,staticClass:"el-image-viewer__img",style:e.imgStyle,attrs:{src:e.currentImg},on:{load:e.handleImgLoad,error:e.handleImgError,mousedown:e.handleMouseDown}}):e._e()})),0)],2)])};Ku._withStripped=!0;var Xu=Object.assign||function(e){for(var t=1;te?this.zIndex:e}},watch:{index:{handler:function(e){this.reset(),this.onSwitch(e)}},currentImg:function(e){var t=this;this.$nextTick((function(e){t.$refs.img[0].complete||(t.loading=!0)}))}},methods:{hide:function(){this.deviceSupportUninstall(),this.onClose()},deviceSupportInstall:function(){var e=this;this._keyDownHandler=function(t){switch(t.stopPropagation(),t.keyCode){case 27:e.hide();break;case 32:e.toggleMode();break;case 37:e.prev();break;case 38:e.handleActions("zoomIn");break;case 39:e.next();break;case 40:e.handleActions("zoomOut")}},this._mouseWheelHandler=Object(m.rafThrottle)((function(t){(t.wheelDelta?t.wheelDelta:-t.detail)>0?e.handleActions("zoomIn",{zoomRate:.015,enableTransition:!1}):e.handleActions("zoomOut",{zoomRate:.015,enableTransition:!1})})),Object(fe.on)(document,"keydown",this._keyDownHandler),Object(fe.on)(document,Qu,this._mouseWheelHandler)},deviceSupportUninstall:function(){Object(fe.off)(document,"keydown",this._keyDownHandler),Object(fe.off)(document,Qu,this._mouseWheelHandler),this._keyDownHandler=null,this._mouseWheelHandler=null},handleImgLoad:function(e){this.loading=!1},handleImgError:function(e){this.loading=!1,e.target.alt="加载失败"},handleMouseDown:function(e){var t=this;if(!this.loading&&0===e.button){var i=this.transform,n=i.offsetX,r=i.offsetY,s=e.pageX,a=e.pageY;this._dragHandler=Object(m.rafThrottle)((function(e){t.transform.offsetX=n+e.pageX-s,t.transform.offsetY=r+e.pageY-a})),Object(fe.on)(document,"mousemove",this._dragHandler),Object(fe.on)(document,"mouseup",(function(e){Object(fe.off)(document,"mousemove",t._dragHandler)})),e.preventDefault()}},handleMaskClick:function(){this.maskClosable&&this.hide()},reset:function(){this.transform={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}},toggleMode:function(){if(!this.loading){var e=Object.keys(Zu),t=(Object.values(Zu).indexOf(this.mode)+1)%e.length;this.mode=Zu[e[t]],this.reset()}},prev:function(){if(!this.isFirst||this.infinite){var e=this.urlList.length;this.index=(this.index-1+e)%e}},next:function(){if(!this.isLast||this.infinite){var e=this.urlList.length;this.index=(this.index+1)%e}},handleActions:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.loading){var i=Xu({zoomRate:.2,rotateDeg:90,enableTransition:!0},t),n=i.zoomRate,r=i.rotateDeg,s=i.enableTransition,a=this.transform;switch(e){case"zoomOut":a.scale>.2&&(a.scale=parseFloat((a.scale-n).toFixed(3)));break;case"zoomIn":a.scale=parseFloat((a.scale+n).toFixed(3));break;case"clocelise":a.deg+=r;break;case"anticlocelise":a.deg-=r}a.enableTransition=s}}},mounted:function(){this.deviceSupportInstall(),this.appendToBody&&document.body.appendChild(this.$el),this.$refs["el-image-viewer__wrapper"].focus()},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},Ku,[],!1,null,null,null);Ju.options.__file="packages/image/src/image-viewer.vue";var ec=Ju.exports,tc=function(){return void 0!==document.documentElement.style.objectFit},ic="none",nc="contain",rc="cover",sc="fill",ac="scale-down",oc="",lc=r({name:"ElImage",mixins:[f.a],inheritAttrs:!1,components:{ImageViewer:ec},props:{src:String,fit:String,lazy:Boolean,scrollContainer:{},previewSrcList:{type:Array,default:function(){return[]}},zIndex:{type:Number,default:2e3}},data:function(){return{loading:!0,error:!1,show:!this.lazy,imageWidth:0,imageHeight:0,showViewer:!1}},computed:{imageStyle:function(){var e=this.fit;return!this.$isServer&&e?tc()?{"object-fit":e}:this.getImageStyle(e):{}},alignCenter:function(){return!this.$isServer&&!tc()&&this.fit!==sc},preview:function(){var e=this.previewSrcList;return Array.isArray(e)&&e.length>0},imageIndex:function(){var e=0,t=this.previewSrcList.indexOf(this.src);return t>=0&&(e=t),e}},watch:{src:function(e){this.show&&this.loadImage()},show:function(e){e&&this.loadImage()}},mounted:function(){this.lazy?this.addLazyLoadListener():this.loadImage()},beforeDestroy:function(){this.lazy&&this.removeLazyLoadListener()},methods:{loadImage:function(){var e=this;if(!this.$isServer){this.loading=!0,this.error=!1;var t=new Image;t.onload=function(i){return e.handleLoad(i,t)},t.onerror=this.handleError.bind(this),Object.keys(this.$attrs).forEach((function(i){var n=e.$attrs[i];t.setAttribute(i,n)})),t.src=this.src}},handleLoad:function(e,t){this.imageWidth=t.width,this.imageHeight=t.height,this.loading=!1,this.error=!1},handleError:function(e){this.loading=!1,this.error=!0,this.$emit("error",e)},handleLazyLoad:function(){Object(fe.isInContainer)(this.$el,this._scrollContainer)&&(this.show=!0,this.removeLazyLoadListener())},addLazyLoadListener:function(){if(!this.$isServer){var e=this.scrollContainer,t=null;(t=Object(xo.isHtmlElement)(e)?e:Object(xo.isString)(e)?document.querySelector(e):Object(fe.getScrollContainer)(this.$el))&&(this._scrollContainer=t,this._lazyLoadHandler=Zo()(200,this.handleLazyLoad),Object(fe.on)(t,"scroll",this._lazyLoadHandler),this.handleLazyLoad())}},removeLazyLoadListener:function(){var e=this._scrollContainer,t=this._lazyLoadHandler;!this.$isServer&&e&&t&&(Object(fe.off)(e,"scroll",t),this._scrollContainer=null,this._lazyLoadHandler=null)},getImageStyle:function(e){var t=this.imageWidth,i=this.imageHeight,n=this.$el,r=n.clientWidth,s=n.clientHeight;if(!(t&&i&&r&&s))return{};var a=t/i,o=r/s;e===ac&&(e=tr)return console.warn("[ElementCalendar]end time should be greater than start time"),[];if(Object(hn.validateRangeInOneMonth)(n,r))return[[n,r]];var s=[],a=new Date(n.getFullYear(),n.getMonth()+1,1),o=this.toDate(a.getTime()-864e5);if(!Object(hn.validateRangeInOneMonth)(a,r))return console.warn("[ElementCalendar]start time and end time interval must not exceed two months"),[];s.push([n,o]);var l=this.realFirstDayOfWeek,u=a.getDay(),c=0;return u!==l&&(c=0===l?7-u:(c=l-u)>0?c:7+c),(a=this.toDate(a.getTime()+864e5*c)).getDate()6?0:Math.floor(this.firstDayOfWeek)}},data:function(){return{selectedDay:"",now:new Date}}},dc,[],!1,null,null,null);_c.options.__file="packages/calendar/src/main.vue";var bc=_c.exports;bc.install=function(e){e.component(bc.name,bc)};var yc=bc,xc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-fade-in"}},[e.visible?i("div",{staticClass:"el-backtop",style:{right:e.styleRight,bottom:e.styleBottom},on:{click:function(t){return t.stopPropagation(),e.handleClick(t)}}},[e._t("default",[i("el-icon",{attrs:{name:"caret-top"}})])],2):e._e()])};xc._withStripped=!0;var kc=function(e){return Math.pow(e,3)},wc=r({name:"ElBacktop",props:{visibilityHeight:{type:Number,default:200},target:[String],right:{type:Number,default:40},bottom:{type:Number,default:40}},data:function(){return{el:null,container:null,visible:!1}},computed:{styleBottom:function(){return this.bottom+"px"},styleRight:function(){return this.right+"px"}},mounted:function(){this.init(),this.throttledScrollHandler=Zo()(300,this.onScroll),this.container.addEventListener("scroll",this.throttledScrollHandler)},methods:{init:function(){if(this.container=document,this.el=document.documentElement,this.target){if(this.el=document.querySelector(this.target),!this.el)throw new Error("target is not existed: "+this.target);this.container=this.el}},onScroll:function(){var e=this.el.scrollTop;this.visible=e>=this.visibilityHeight},handleClick:function(e){this.scrollToTop(),this.$emit("click",e)},scrollToTop:function(){var e=this.el,t=Date.now(),i=e.scrollTop,n=window.requestAnimationFrame||function(e){return setTimeout(e,16)};n((function r(){var s,a=(Date.now()-t)/500;a<1?(e.scrollTop=i*(1-((s=a)<.5?kc(2*s)/2:1-kc(2*(1-s))/2)),n(r)):e.scrollTop=0}))}},beforeDestroy:function(){this.container.removeEventListener("scroll",this.throttledScrollHandler)}},xc,[],!1,null,null,null);wc.options.__file="packages/backtop/src/main.vue";var Cc=wc.exports;Cc.install=function(e){e.component(Cc.name,Cc)};var Sc=Cc,Oc=function(e,t){return e===window||e===document?document.documentElement[t]:e[t]},Dc=function(e){return Oc(e,"offsetHeight")},Ec="ElInfiniteScroll",Tc={delay:{type:Number,default:200},distance:{type:Number,default:0},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},$c=function(e,t){return Object(xo.isHtmlElement)(e)?(i=Tc,Object.keys(i||{}).map((function(e){return[e,i[e]]}))).reduce((function(i,n){var r=n[0],s=n[1],a=s.type,o=s.default,l=e.getAttribute("infinite-scroll-"+r);switch(l=Object(xo.isUndefined)(t[l])?l:t[l],a){case Number:l=Number(l),l=Number.isNaN(l)?o:l;break;case Boolean:l=Object(xo.isDefined)(l)?"false"!==l&&Boolean(l):o;break;default:l=a(l)}return i[r]=l,i}),{}):{};var i},Pc=function(e){return e.getBoundingClientRect().top},jc=function(e){var t=this[Ec],i=t.el,n=t.vm,r=t.container,s=t.observer,a=$c(i,n),o=a.distance;if(!a.disabled){var l=r.getBoundingClientRect();if(l.width||l.height){var u=!1;if(r===i){var c=r.scrollTop+function(e){return Oc(e,"clientHeight")}(r);u=r.scrollHeight-c<=o}else{u=Dc(i)+Pc(i)-Pc(r)-Dc(r)+Number.parseFloat(function(e,t){if(e===window&&(e=document.documentElement),1!==e.nodeType)return[];var i=window.getComputedStyle(e,null);return t?i[t]:i}(r,"borderBottomWidth"))<=o}u&&Object(xo.isFunction)(e)?e.call(n):s&&(s.disconnect(),this[Ec].observer=null)}}},Mc={name:"InfiniteScroll",inserted:function(e,t,i){var n=t.value,r=i.context,s=Object(fe.getScrollContainer)(e,!0),a=$c(e,r),o=a.delay,l=a.immediate,u=$()(o,jc.bind(e,n));(e[Ec]={el:e,vm:r,container:s,onScroll:u},s)&&(s.addEventListener("scroll",u),l&&((e[Ec].observer=new MutationObserver(u)).observe(s,{childList:!0,subtree:!0}),u()))},unbind:function(e){var t=e[Ec],i=t.container,n=t.onScroll;i&&i.removeEventListener("scroll",n)},install:function(e){e.directive(Mc.name,Mc)}},Ic=Mc,Ac=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-page-header"},[i("div",{staticClass:"el-page-header__left",on:{click:function(t){e.$emit("back")}}},[i("i",{staticClass:"el-icon-back"}),i("div",{staticClass:"el-page-header__title"},[e._t("title",[e._v(e._s(e.title))])],2)]),i("div",{staticClass:"el-page-header__content"},[e._t("content",[e._v(e._s(e.content))])],2)])};Ac._withStripped=!0;var Nc=r({name:"ElPageHeader",props:{title:{type:String,default:function(){return Object(Ir.t)("el.pageHeader.title")}},content:String}},Ac,[],!1,null,null,null);Nc.options.__file="packages/page-header/src/main.vue";var Lc=Nc.exports;Lc.install=function(e){e.component(Lc.name,Lc)};var Fc=Lc,Vc=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-cascader-panel",this.border&&"is-bordered"],on:{keydown:this.handleKeyDown}},this._l(this.menus,(function(e,i){return t("cascader-menu",{key:i,ref:"menu",refInFor:!0,attrs:{index:i,nodes:e}})})),1)};Vc._withStripped=!0;var zc=i(43),Rc=i.n(zc),Bc=function(e){return e.stopPropagation()},Hc=r({inject:["panel"],components:{ElCheckbox:ri.a,ElRadio:Rc.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some((function(t){return e.isInPath(t)}))},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,i=this.node,n=this.isDisabled,r=this.config,s=r.multiple;!r.checkStrictly&&n||i.loading||(r.lazy&&!i.loaded?t.lazyLoad(i,(function(){var t=e.isLeaf;if(t||e.handleExpand(),s){var n=!!t&&i.checked;e.handleMultiCheckChange(n)}})):t.handleExpand(i))},handleCheckChange:function(){var e=this.panel,t=this.value,i=this.node;e.handleCheckChange(t),e.handleExpand(i)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,i=this.isChecked,n=this.config,r=n.checkStrictly;return n.multiple?this.renderCheckbox(e):r?this.renderRadio(e):t&&i?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,i=this.isLeaf;return t.loading?this.renderLoadingIcon(e):i?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,i=this.config,n=this.isDisabled,r={on:{change:this.handleMultiCheckChange},nativeOn:{}};return i.checkStrictly&&(r.nativeOn.click=Bc),e("el-checkbox",Ja()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:n}},r]))},renderRadio:function(e){var t=this.checkedValue,i=this.value,n=this.isDisabled;return Object(m.isEqual)(i,t)&&(i=t),e("el-radio",{attrs:{value:t,label:i,disabled:n},on:{change:this.handleCheckChange},nativeOn:{click:Bc}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,i=this.node,n=t.renderLabelFn;return e("span",{class:"el-cascader-node__label"},[(n?n({node:i,data:i.data}):null)||i.label])}},render:function(e){var t=this,i=this.inActivePath,n=this.inCheckedPath,r=this.isChecked,s=this.isLeaf,a=this.isDisabled,o=this.config,l=this.nodeId,u=o.expandTrigger,c=o.checkStrictly,d=o.multiple,h=!c&&a,p={on:{}};return"click"===u?p.on.click=this.handleExpand:(p.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},p.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),!s||a||c||d||(p.on.click=this.handleCheckChange),e("li",Ja()([{attrs:{role:"menuitem",id:l,"aria-expanded":i,tabindex:h?null:-1},class:{"el-cascader-node":!0,"is-selectable":c,"in-active-path":i,"in-checked-path":n,"is-active":r,"is-disabled":h}},p]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},void 0,void 0,!1,null,null,null);Hc.options.__file="packages/cascader-panel/src/cascader-node.vue";var Wc=Hc.exports,qc=r({name:"ElCascaderMenu",mixins:[f.a],inject:["panel"],components:{ElScrollbar:L.a,CascaderNode:Wc},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(m.generateId)()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,i=this.hoverTimer,n=this.$refs.hoverZone;if(t&&n)if(t.contains(e.target)){clearTimeout(i);var r=this.$el.getBoundingClientRect().left,s=e.clientX-r,a=this.$el,o=a.offsetWidth,l=a.offsetHeight,u=t.offsetTop,c=u+t.offsetHeight;n.innerHTML='\n \n \n '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var r=this.nodes.map((function(i,r){var s=i.hasChildren;return e("cascader-node",Ja()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+r,"aria-haspopup":s,"aria-owns":s?t:null}},n]))}));return[].concat(r,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",Ja()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},void 0,void 0,!1,null,null,null);qc.options.__file="packages/cascader-panel/src/cascader-menu.vue";var Uc=qc.exports,Gc=function(){function e(e,t){for(var i=0;i1?t-1:0),n=1;n1?n-1:0),s=1;s0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},Gc(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,r=i.checkStrictly;return e[n]||!r&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,r=this.config,s=r.lazy,a=r.leaf;if(s){var o=Object(He.isDef)(e[a])?e[a]:!!t&&!n.length;return this.hasChildren=!o,o}return!i}}]),e}();var Xc=function e(t,i){return t.reduce((function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t}),[])},Zc=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(m.coerceTruthyValueToArray)(e),this.nodes=e.map((function(e){return new Kc(e,t.config)})),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new Kc(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=Object(m.coerceTruthyValueToArray)(e)).forEach((function(e){return i.appendNode(e,t)}))},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:Xc(this.nodes,e)},e.prototype.getNodeByValue=function(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter((function(t){return Object(m.valueEquals)(t.path,e)||t.value===e}));return t&&t.length?t[0]:null},e}(),Qc=Object.assign||function(e){for(var t=1;t0){var l=i.store.getNodeByValue(s);l.data[o]||i.lazyLoad(l,(function(){i.handleExpand(l)})),i.loadCount===i.checkedValue.length&&i.$parent.computePresentText()}}t&&t(n)}))},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map((function(e){return e.getValueByOption()}))},scrollIntoView:function(){this.$isServer||(this.$refs.menu||[]).forEach((function(e){var t=e.$el;if(t){var i=t.querySelector(".el-scrollbar__wrap"),n=t.querySelector(".el-cascader-node.is-active")||t.querySelector(".el-cascader-node.in-active-path");Vt()(i,n)}}))},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue;return this.multiple?this.getFlattedNodes(e).filter((function(e){return e.checked})):this.isEmptyValue(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,i=e.multiple,n=e.emitPath;i?(this.getCheckedNodes(t).filter((function(e){return!e.isDisabled})).forEach((function(e){return e.doCheck(!1)})),this.calculateMultiCheckedValue()):this.checkedValue=n?[]:null}}},Vc,[],!1,null,null,null);sd.options.__file="packages/cascader-panel/src/cascader-panel.vue";var ad=sd.exports;ad.install=function(e){e.component(ad.name,ad)};var od=ad,ld=r({name:"ElAvatar",props:{size:{type:[Number,String],validator:function(e){return"string"==typeof e?["large","medium","small"].includes(e):"number"==typeof e}},shape:{type:String,default:"circle",validator:function(e){return["circle","square"].includes(e)}},icon:String,src:String,alt:String,srcSet:String,error:Function,fit:{type:String,default:"cover"}},data:function(){return{isImageExist:!0}},computed:{avatarClass:function(){var e=this.size,t=this.icon,i=this.shape,n=["el-avatar"];return e&&"string"==typeof e&&n.push("el-avatar--"+e),t&&n.push("el-avatar--icon"),i&&n.push("el-avatar--"+i),n.join(" ")}},methods:{handleError:function(){var e=this.error;!1!==(e?e():void 0)&&(this.isImageExist=!1)},renderAvatar:function(){var e=this.$createElement,t=this.icon,i=this.src,n=this.alt,r=this.isImageExist,s=this.srcSet,a=this.fit;return r&&i?e("img",{attrs:{src:i,alt:n,srcSet:s},on:{error:this.handleError},style:{"object-fit":a}}):t?e("i",{class:t}):this.$slots.default}},render:function(){var e=arguments[0],t=this.avatarClass,i=this.size,n="number"==typeof i?{height:i+"px",width:i+"px",lineHeight:i+"px"}:{};return e("span",{class:t,style:n},[this.renderAvatar()])}},void 0,void 0,!1,null,null,null);ld.options.__file="packages/avatar/src/main.vue";var ud=ld.exports;ud.install=function(e){e.component(ud.name,ud)};var cd=ud,dd=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-drawer-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-drawer__wrapper",attrs:{tabindex:"-1"}},[i("div",{staticClass:"el-drawer__container",class:e.visible&&"el-drawer__open",attrs:{role:"document",tabindex:"-1"},on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{ref:"drawer",staticClass:"el-drawer",class:[e.direction,e.customClass],style:e.isHorizontal?"width: "+e.drawerSize:"height: "+e.drawerSize,attrs:{"aria-modal":"true","aria-labelledby":"el-drawer__title","aria-label":e.title,role:"dialog",tabindex:"-1"}},[e.withHeader?i("header",{staticClass:"el-drawer__header",attrs:{id:"el-drawer__title"}},[e._t("title",[i("span",{attrs:{role:"heading",title:e.title}},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-drawer__close-btn",attrs:{"aria-label":"close "+(e.title||"drawer"),type:"button"},on:{click:e.closeDrawer}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2):e._e(),e.rendered?i("section",{staticClass:"el-drawer__body"},[e._t("default")],2):e._e()])])])])};dd._withStripped=!0;var hd=r({name:"ElDrawer",mixins:[y.a,C.a],props:{appendToBody:{type:Boolean,default:!1},beforeClose:{type:Function},customClass:{type:String,default:""},closeOnPressEscape:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},modal:{type:Boolean,default:!0},direction:{type:String,default:"rtl",validator:function(e){return-1!==["ltr","rtl","ttb","btt"].indexOf(e)}},modalAppendToBody:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},size:{type:[Number,String],default:"30%"},title:{type:String,default:""},visible:{type:Boolean},wrapperClosable:{type:Boolean,default:!0},withHeader:{type:Boolean,default:!0}},computed:{isHorizontal:function(){return"rtl"===this.direction||"ltr"===this.direction},drawerSize:function(){return"number"==typeof this.size?this.size+"px":this.size}},data:function(){return{closed:!1,prevActiveElement:null}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.appendToBody&&document.body.appendChild(this.$el),this.prevActiveElement=document.activeElement):(this.closed||(this.$emit("close"),!0===this.destroyOnClose&&(this.rendered=!1)),this.$nextTick((function(){t.prevActiveElement&&t.prevActiveElement.focus()})))}},methods:{afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),!0===this.destroyOnClose&&(this.rendered=!1),this.closed=!0)},handleWrapperClick:function(){this.wrapperClosable&&this.closeDrawer()},closeDrawer:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},handleClose:function(){this.closeDrawer()}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},dd,[],!1,null,null,null);hd.options.__file="packages/drawer/src/main.vue";var pd=hd.exports;pd.install=function(e){e.component(pd.name,pd)};var fd=pd,md=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("el-popover",e._b({attrs:{trigger:"click"},model:{value:e.visible,callback:function(t){e.visible=t},expression:"visible"}},"el-popover",e.$attrs,!1),[i("div",{staticClass:"el-popconfirm"},[i("p",{staticClass:"el-popconfirm__main"},[e.hideIcon?e._e():i("i",{staticClass:"el-popconfirm__icon",class:e.icon,style:{color:e.iconColor}}),e._v("\n "+e._s(e.title)+"\n ")]),i("div",{staticClass:"el-popconfirm__action"},[i("el-button",{attrs:{size:"mini",type:e.cancelButtonType},on:{click:e.cancel}},[e._v("\n "+e._s(e.displayCancelButtonText)+"\n ")]),i("el-button",{attrs:{size:"mini",type:e.confirmButtonType},on:{click:e.confirm}},[e._v("\n "+e._s(e.displayConfirmButtonText)+"\n ")])],1)]),e._t("reference",null,{slot:"reference"})],2)};md._withStripped=!0;var vd=i(44),gd=r({name:"ElPopconfirm",props:{title:{type:String},confirmButtonText:{type:String},cancelButtonText:{type:String},confirmButtonType:{type:String,default:"primary"},cancelButtonType:{type:String,default:"text"},icon:{type:String,default:"el-icon-question"},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1}},components:{ElPopover:i.n(vd).a,ElButton:U.a},data:function(){return{visible:!1}},computed:{displayConfirmButtonText:function(){return this.confirmButtonText||Object(Ir.t)("el.popconfirm.confirmButtonText")},displayCancelButtonText:function(){return this.cancelButtonText||Object(Ir.t)("el.popconfirm.cancelButtonText")}},methods:{confirm:function(){this.visible=!1,this.$emit("confirm")},cancel:function(){this.visible=!1,this.$emit("cancel")}}},md,[],!1,null,null,null);gd.options.__file="packages/popconfirm/src/main.vue";var _d=gd.exports;_d.install=function(e){e.component(_d.name,_d)};var bd=_d,yd=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[e.uiLoading?[i("div",e._b({class:["el-skeleton",e.animated?"is-animated":""]},"div",e.$attrs,!1),[e._l(e.count,(function(t){return[e.loading?e._t("template",e._l(e.rows,(function(n){return i("el-skeleton-item",{key:t+"-"+n,class:{"el-skeleton__paragraph":1!==n,"is-first":1===n,"is-last":n===e.rows&&e.rows>1},attrs:{variant:"p"}})}))):e._e()]}))],2)]:[e._t("default",null,null,e.$attrs)]],2)};yd._withStripped=!0;var xd=r({name:"ElSkeleton",props:{animated:{type:Boolean,default:!1},count:{type:Number,default:1},rows:{type:Number,default:4},loading:{type:Boolean,default:!0},throttle:{type:Number,default:0}},watch:{loading:{handler:function(e){var t=this;this.throttle<=0?this.uiLoading=e:e?(clearTimeout(this.timeoutHandle),this.timeoutHandle=setTimeout((function(){t.uiLoading=t.loading}),this.throttle)):this.uiLoading=e},immediate:!0}},data:function(){return{uiLoading:this.throttle<=0&&this.loading}}},yd,[],!1,null,null,null);xd.options.__file="packages/skeleton/src/index.vue";var kd=xd.exports;kd.install=function(e){e.component(kd.name,kd)};var wd=kd,Cd=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-skeleton__item","el-skeleton__"+this.variant]},["image"===this.variant?t("img-placeholder"):this._e()],1)};Cd._withStripped=!0;var Sd=function(){var e=this.$createElement,t=this._self._c||e;return t("svg",{attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"}},[t("path",{attrs:{d:"M64 896V128h896v768H64z m64-128l192-192 116.352 116.352L640 448l256 307.2V192H128v576z m224-480a96 96 0 1 1-0.064 192.064A96 96 0 0 1 352 288z"}})])};Sd._withStripped=!0;var Od=r({name:"ImgPlaceholder"},Sd,[],!1,null,null,null);Od.options.__file="packages/skeleton/src/img-placeholder.vue";var Dd,Ed=Od.exports,Td=r({name:"ElSkeletonItem",props:{variant:{type:String,default:"text"}},components:(Dd={},Dd[Ed.name]=Ed,Dd)},Cd,[],!1,null,null,null);Td.options.__file="packages/skeleton/src/item.vue";var $d=Td.exports;$d.install=function(e){e.component($d.name,$d)};var Pd=$d,jd=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-empty"},[i("div",{staticClass:"el-empty__image",style:e.imageStyle},[e.image?i("img",{attrs:{src:e.image,ondragstart:"return false"}}):e._t("image",[i("img-empty")])],2),i("div",{staticClass:"el-empty__description"},[e.$slots.description?e._t("description"):i("p",[e._v(e._s(e.emptyDescription))])],2),e.$slots.default?i("div",{staticClass:"el-empty__bottom"},[e._t("default")],2):e._e()])};jd._withStripped=!0;var Md=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("svg",{attrs:{viewBox:"0 0 79 86",version:"1.1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}},[i("defs",[i("linearGradient",{attrs:{id:"linearGradient-1-"+e.id,x1:"38.8503086%",y1:"0%",x2:"61.1496914%",y2:"100%"}},[i("stop",{attrs:{"stop-color":"#FCFCFD",offset:"0%"}}),i("stop",{attrs:{"stop-color":"#EEEFF3",offset:"100%"}})],1),i("linearGradient",{attrs:{id:"linearGradient-2-"+e.id,x1:"0%",y1:"9.5%",x2:"100%",y2:"90.5%"}},[i("stop",{attrs:{"stop-color":"#FCFCFD",offset:"0%"}}),i("stop",{attrs:{"stop-color":"#E9EBEF",offset:"100%"}})],1),i("rect",{attrs:{id:"path-3-"+e.id,x:"0",y:"0",width:"17",height:"36"}})],1),i("g",{attrs:{id:"Illustrations",stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"}},[i("g",{attrs:{id:"B-type",transform:"translate(-1268.000000, -535.000000)"}},[i("g",{attrs:{id:"Group-2",transform:"translate(1268.000000, 535.000000)"}},[i("path",{attrs:{id:"Oval-Copy-2",d:"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",fill:"#F7F8FC"}}),i("polygon",{attrs:{id:"Rectangle-Copy-14",fill:"#E5E7E9",transform:"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",points:"13 58 53 58 42 45 2 45"}}),i("g",{attrs:{id:"Group-Copy",transform:"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"}},[i("polygon",{attrs:{id:"Rectangle-Copy-10",fill:"#E5E7E9",transform:"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",points:"2.84078316e-14 3 18 3 23 7 5 7"}}),i("polygon",{attrs:{id:"Rectangle-Copy-11",fill:"#EDEEF2",points:"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"}}),i("rect",{attrs:{id:"Rectangle-Copy-12",fill:"url(#linearGradient-1-"+e.id+")",transform:"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",x:"38",y:"7",width:"17",height:"36"}}),i("polygon",{attrs:{id:"Rectangle-Copy-13",fill:"#F8F9FB",transform:"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",points:"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"}})]),i("rect",{attrs:{id:"Rectangle-Copy-15",fill:"url(#linearGradient-2-"+e.id+")",x:"13",y:"45",width:"40",height:"36"}}),i("g",{attrs:{id:"Rectangle-Copy-17",transform:"translate(53.000000, 45.000000)"}},[i("mask",{attrs:{id:"mask-4-"+e.id,fill:"white"}},[i("use",{attrs:{"xlink:href":"#path-3-"+e.id}})]),i("use",{attrs:{id:"Mask",fill:"#E0E3E9",transform:"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ","xlink:href":"#path-3-"+e.id}}),i("polygon",{attrs:{id:"Rectangle-Copy",fill:"#D5D7DE",mask:"url(#mask-4-"+e.id+")",transform:"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",points:"7 0 24 0 20 18 -1.70530257e-13 16"}})]),i("polygon",{attrs:{id:"Rectangle-Copy-18",fill:"#F8F9FB",transform:"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",points:"62 45 79 45 70 58 53 58"}})])])])])};Md._withStripped=!0;var Id=0,Ad=r({name:"ImgEmpty",data:function(){return{id:++Id}}},Md,[],!1,null,null,null);Ad.options.__file="packages/empty/src/img-empty.vue";var Nd,Ld=Ad.exports,Fd=r({name:"ElEmpty",components:(Nd={},Nd[Ld.name]=Ld,Nd),props:{image:{type:String,default:""},imageSize:Number,description:{type:String,default:""}},computed:{emptyDescription:function(){return this.description||Object(Ir.t)("el.empty.description")},imageStyle:function(){return{width:this.imageSize?this.imageSize+"px":""}}}},jd,[],!1,null,null,null);Fd.options.__file="packages/empty/src/index.vue";var Vd=Fd.exports;Vd.install=function(e){e.component(Vd.name,Vd)};var zd,Rd=Vd,Bd=Object.assign||function(e){for(var t=1;t3&&void 0!==arguments[3]&&arguments[3];return e.props||(e.props={}),t>i&&(e.props.span=i),n&&(e.props.span=i),e},getRows:function(){var e=this,t=(this.$slots.default||[]).filter((function(e){return e.tag&&e.componentOptions&&"ElDescriptionsItem"===e.componentOptions.Ctor.options.name})),i=t.map((function(t){return{props:e.getOptionProps(t),slots:e.getSlots(t),vnode:t}})),n=[],r=[],s=this.column;return i.forEach((function(i,a){var o=i.props.span||1;if(a===t.length-1)return r.push(e.filledNode(i,o,s,!0)),void n.push(r);o1&&void 0!==arguments[1]?arguments[1]:{};Ar.a.use(t.locale),Ar.a.i18n(t.i18n),ph.forEach((function(t){e.component(t.name,t)})),e.use(Ic),e.use(La.directive),e.prototype.$ELEMENT={size:t.size||"",zIndex:t.zIndex||2e3},e.prototype.$loading=La.service,e.prototype.$msgbox=Qr,e.prototype.$alert=Qr.alert,e.prototype.$confirm=Qr.confirm,e.prototype.$prompt=Qr.prompt,e.prototype.$notify=pa,e.prototype.$message=Eo};"undefined"!=typeof window&&window.Vue&&fh(window.Vue);t.default={version:"2.15.6",locale:Ar.a.use,i18n:Ar.a.i18n,install:fh,CollapseTransition:be.a,Loading:La,Pagination:g,Dialog:D,Autocomplete:W,Dropdown:Z,DropdownMenu:te,DropdownItem:se,Menu:ge,Submenu:Ce,MenuItem:$e,MenuItemGroup:Ie,Input:Ue,InputNumber:Ze,Radio:tt,RadioGroup:at,RadioButton:ct,Checkbox:ft,CheckboxButton:_t,CheckboxGroup:kt,Switch:Ot,Select:Bt,Option:Ht,OptionGroup:Gt,Button:Zt,ButtonGroup:ti,Table:nn,TableColumn:cn,DatePicker:or,TimeSelect:mr,TimePicker:Cr,Popover:$r,Tooltip:jr,MessageBox:Qr,Breadcrumb:is,BreadcrumbItem:as,Form:cs,FormItem:_s,Tabs:Ds,TabPane:Ps,Tag:Is,Tree:Qs,Alert:na,Notification:pa,Slider:wa,Icon:Ra,Row:Ha,Col:Ua,Upload:oo,Progress:ho,Spinner:vo,Message:Eo,Badge:jo,Card:No,Rate:zo,Steps:Wo,Step:Yo,Carousel:el,Scrollbar:sl,CarouselItem:ul,Collapse:pl,CollapseItem:gl,Cascader:Tl,ColorPicker:su,Transfer:hu,Container:vu,Header:yu,Aside:Cu,Main:Eu,Footer:ju,Timeline:Au,TimelineItem:Vu,Link:Hu,Divider:Gu,Image:cc,Calendar:yc,Backtop:Sc,InfiniteScroll:Ic,PageHeader:Fc,CascaderPanel:od,Avatar:cd,Drawer:fd,Popconfirm:bd,Skeleton:wd,SkeletonItem:Pd,Empty:Rd,Descriptions:Ud,DescriptionsItem:Yd,Result:hh}}]).default},function(e){e.exports=JSON.parse('{"selection":{"domain":{"template":"Domain","characteristics":{"Agent":"MultiAgent","Concurrency":"Parallel","Constraints":"(none)","Dynamics":"Environment","Events":"Events","Goals":"(none)","Initialization":"(none)","Memory":"History","Observability":"PartiallyObservable","Renderability":"(none)","Value":"Rewards"},"showFinetunedOnly":true,"simplifySignatures":true},"solver":{"template":"Solver","characteristics":{"Assessability":"(none)","Parallelability":"(none)","Policy":"(none)","Restorability":"(none)"},"showFinetunedOnly":true}},"templates":{"domain":[{"name":"Domain","characteristics":{"Agent":"MultiAgent","Concurrency":"Parallel","Constraints":"(none)","Dynamics":"Environment","Events":"Events","Goals":"(none)","Initialization":"(none)","Memory":"History","Observability":"PartiallyObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"RLDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"Environment","Events":"Actions","Goals":"(none)","Initialization":"Initializable","Memory":"Markovian","Observability":"TransformedObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"MultiAgentRLDomain","characteristics":{"Agent":"MultiAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"Environment","Events":"Actions","Goals":"(none)","Initialization":"Initializable","Memory":"Markovian","Observability":"TransformedObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"StatelessSimulatorDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"Simulation","Events":"Actions","Goals":"(none)","Initialization":"(none)","Memory":"Markovian","Observability":"TransformedObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"MDPDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"EnumerableTransitions","Events":"Actions","Goals":"(none)","Initialization":"DeterministicInitialized","Memory":"Markovian","Observability":"FullyObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"POMDPDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"EnumerableTransitions","Events":"Actions","Goals":"(none)","Initialization":"UncertainInitialized","Memory":"Markovian","Observability":"PartiallyObservable","Renderability":"(none)","Value":"Rewards"}},{"name":"GoalMDPDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"EnumerableTransitions","Events":"Actions","Goals":"Goals","Initialization":"DeterministicInitialized","Memory":"Markovian","Observability":"FullyObservable","Renderability":"(none)","Value":"PositiveCosts"}},{"name":"GoalPOMDPDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"EnumerableTransitions","Events":"Actions","Goals":"Goals","Initialization":"UncertainInitialized","Memory":"Markovian","Observability":"PartiallyObservable","Renderability":"(none)","Value":"PositiveCosts"}},{"name":"DeterministicPlanningDomain","characteristics":{"Agent":"SingleAgent","Concurrency":"Sequential","Constraints":"(none)","Dynamics":"DeterministicTransitions","Events":"Actions","Goals":"Goals","Initialization":"DeterministicInitialized","Memory":"Markovian","Observability":"FullyObservable","Renderability":"(none)","Value":"PositiveCosts"}},{"name":"ParallelDomain","characteristics":{"Agent":"(none)","Concurrency":"(none)","Constraints":"(none)","Dynamics":"(none)","Events":"(none)","Goals":"(none)","Initialization":"(none)","Memory":"(none)","Observability":"(none)","Renderability":"(none)","Value":"(none)"}},{"name":"PipeParallelDomain","characteristics":{"Agent":"(none)","Concurrency":"(none)","Constraints":"(none)","Dynamics":"(none)","Events":"(none)","Goals":"(none)","Initialization":"(none)","Memory":"(none)","Observability":"(none)","Renderability":"(none)","Value":"(none)","Domains":"ParallelDomain"}},{"name":"ShmParallelDomain","characteristics":{"Agent":"(none)","Concurrency":"(none)","Constraints":"(none)","Dynamics":"(none)","Events":"(none)","Goals":"(none)","Initialization":"(none)","Memory":"(none)","Observability":"(none)","Renderability":"(none)","Value":"(none)","Domains":"ParallelDomain"}}],"solver":[{"name":"Solver","characteristics":{"Assessability":"(none)","Parallelability":"(none)","Policy":"(none)","Restorability":"(none)"}},{"name":"DeterministicPolicySolver","characteristics":{"Assessability":"(none)","Parallelability":"(none)","Policy":"DeterministicPolicies","Restorability":"(none)"}}]},"characteristics":{"domain":[{"name":"Agent","levels":["MultiAgent","SingleAgent"]},{"name":"Concurrency","levels":["Parallel","Sequential"]},{"name":"Constraints","levels":["(none)","Constrained"]},{"name":"Dynamics","levels":["Environment","Simulation","UncertainTransitions","EnumerableTransitions","DeterministicTransitions"]},{"name":"Events","levels":["Events","Actions","UnrestrictedActions"]},{"name":"Goals","levels":["(none)","Goals"]},{"name":"Initialization","levels":["(none)","Initializable","UncertainInitialized","DeterministicInitialized"]},{"name":"Memory","levels":["History","FiniteHistory","Markovian","Memoryless"]},{"name":"Observability","levels":["PartiallyObservable","TransformedObservable","FullyObservable"]},{"name":"Renderability","levels":["(none)","Renderable"]},{"name":"Value","levels":["Rewards","PositiveCosts"]}],"solver":[{"name":"Assessability","levels":["(none)","Utilities","QValues"]},{"name":"Parallelability","levels":["(none)","ParallelSolver"]},{"name":"Policy","levels":["(none)","Policies","UncertainPolicies","DeterministicPolicies"]},{"name":"Restorability","levels":["(none)","Restorable"]}]},"methods":{"domain":{"MultiAgent":[],"SingleAgent":[],"Parallel":[],"Sequential":[],"Constrained":["_get_constraints_"],"Environment":["_state_step"],"Simulation":["_state_sample"],"UncertainTransitions":["_get_next_state_distribution","_is_terminal","_get_transition_value"],"EnumerableTransitions":["_get_next_state_distribution","_is_terminal","_get_transition_value"],"DeterministicTransitions":["_get_next_state","_is_terminal","_get_transition_value"],"Events":["_get_applicable_actions_from","_get_enabled_events_from","_get_action_space_"],"Actions":["_get_applicable_actions_from","_get_action_space_"],"UnrestrictedActions":["_get_action_space_"],"Goals":["_get_goals_"],"Initializable":["_state_reset"],"UncertainInitialized":["_get_initial_state_distribution_"],"DeterministicInitialized":["_get_initial_state_"],"History":[],"FiniteHistory":["_get_memory_maxlen_"],"Markovian":[],"Memoryless":[],"PartiallyObservable":["_get_observation_space_","_get_observation_distribution"],"TransformedObservable":["_get_observation","_get_observation_space_"],"FullyObservable":["_get_observation_space_"],"Renderable":["_render_from"],"Rewards":[],"PositiveCosts":[],"domain":[]},"solver":{"Utilities":["_get_utility"],"QValues":["_get_utility","_get_q_value"],"ParallelSolver":[],"Policies":["_is_policy_defined_for","_sample_action"],"UncertainPolicies":["_is_policy_defined_for","_get_next_action_distribution"],"DeterministicPolicies":["_is_policy_defined_for","_get_next_action"],"Restorable":["_load","_save"],"solver":["_solve_domain"]}},"types":{"domain":{"MultiAgent":{"T_agent":"skdecide.core.StrDict"},"SingleAgent":{"T_agent":"typing.Union"},"Parallel":{"T_concurrency":"typing.List"},"Sequential":{"T_concurrency":"typing.Union"},"Constrained":{},"Environment":{},"Simulation":{},"UncertainTransitions":{},"EnumerableTransitions":{},"DeterministicTransitions":{},"Events":{},"Actions":{},"UnrestrictedActions":{},"Goals":{},"Initializable":{},"UncertainInitialized":{},"DeterministicInitialized":{},"History":{"T_memory":"skdecide.core.Memory"},"FiniteHistory":{"T_memory":"skdecide.core.Memory"},"Markovian":{"T_memory":"typing.Union"},"Memoryless":{"T_memory":"typing.Union"},"PartiallyObservable":{},"TransformedObservable":{},"FullyObservable":{},"Renderable":{},"Rewards":{},"PositiveCosts":{}},"solver":{"Utilities":{},"QValues":{},"ParallelSolver":{},"Policies":{},"UncertainPolicies":{},"DeterministicPolicies":{},"Restorable":{}}},"signatures":{"domain":{"get_constraints":{"params":[{"name":"self"}],"return":"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"},"_get_constraints":{"params":[{"name":"self"}],"return":"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"},"_get_constraints_":{"params":[{"name":"self"}],"return":"List[Constraint[D.T_memory[D.T_state], D.T_agent[D.T_concurrency[D.T_event]], D.T_state]]"},"step":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"_step":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"_state_step":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"set_memory":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"None"},"_set_memory":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"None"},"sample":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"_sample":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"EnvironmentOutcome[D.T_agent[D.T_observation], D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"_state_sample":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"TransitionOutcome[D.T_state, D.T_agent[Value[D.T_value]], D.T_agent[D.T_predicate], D.T_agent[D.T_info]]"},"get_next_state_distribution":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"DiscreteDistribution[D.T_state]"},"_get_next_state_distribution":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"SingleValueDistribution[D.T_state]"},"get_transition_value":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"},{"name":"next_state","default":"None","annotation":"Optional[D.T_state]"}],"return":"D.T_agent[Value[D.T_value]]"},"_get_transition_value":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"},{"name":"next_state","default":"None","annotation":"Optional[D.T_state]"}],"return":"D.T_agent[Value[D.T_value]]"},"is_transition_value_dependent_on_next_state":{"params":[{"name":"self"}],"return":"bool"},"_is_transition_value_dependent_on_next_state":{"params":[{"name":"self"}],"return":"bool"},"_is_transition_value_dependent_on_next_state_":{"params":[{"name":"self"}],"return":"bool"},"is_terminal":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"}],"return":"D.T_agent[D.T_predicate]"},"_is_terminal":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"}],"return":"D.T_agent[D.T_predicate]"},"get_next_state":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"D.T_state"},"_get_next_state":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"D.T_state"},"get_enabled_events":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"Space[D.T_event]"},"_get_enabled_events":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"Space[D.T_event]"},"_get_enabled_events_from":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"Space[D.T_event]"},"is_enabled_event":{"params":[{"name":"self"},{"name":"event","annotation":"D.T_event"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"bool"},"_is_enabled_event":{"params":[{"name":"self"},{"name":"event","annotation":"D.T_event"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"bool"},"_is_enabled_event_from":{"params":[{"name":"self"},{"name":"event","annotation":"D.T_event"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"bool"},"get_action_space":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_event]]"},"_get_action_space":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_event]]"},"_get_action_space_":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_event]]"},"is_action":{"params":[{"name":"self"},{"name":"event","annotation":"D.T_event"}],"return":"bool"},"_is_action":{"params":[{"name":"self"},{"name":"event","annotation":"D.T_event"}],"return":"bool"},"get_applicable_actions":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"D.T_agent[Space[D.T_event]]"},"_get_applicable_actions":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"D.T_agent[Space[D.T_event]]"},"_get_applicable_actions_from":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"D.T_agent[Space[D.T_event]]"},"is_applicable_action":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_event]"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"bool"},"_is_applicable_action":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_event]"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"}],"return":"bool"},"_is_applicable_action_from":{"params":[{"name":"self"},{"name":"action","annotation":"D.T_agent[D.T_event]"},{"name":"memory","annotation":"D.T_memory[D.T_state]"}],"return":"bool"},"get_goals":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"_get_goals":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"_get_goals_":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"is_goal":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_predicate]"},"_is_goal":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_predicate]"},"reset":{"params":[{"name":"self"}],"return":"D.T_agent[D.T_observation]"},"_reset":{"params":[{"name":"self"}],"return":"D.T_agent[D.T_observation]"},"_state_reset":{"params":[{"name":"self"}],"return":"D.T_state"},"get_initial_state_distribution":{"params":[{"name":"self"}],"return":"Distribution[D.T_state]"},"_get_initial_state_distribution":{"params":[{"name":"self"}],"return":"Distribution[D.T_state]"},"_get_initial_state_distribution_":{"params":[{"name":"self"}],"return":"Distribution[D.T_state]"},"get_initial_state":{"params":[{"name":"self"}],"return":"D.T_state"},"_get_initial_state":{"params":[{"name":"self"}],"return":"D.T_state"},"_get_initial_state_":{"params":[{"name":"self"}],"return":"D.T_state"},"_init_memory":{"params":[{"name":"self"},{"name":"state","default":"None","annotation":"Optional[D.T_state]"}],"return":"D.T_memory[D.T_state]"},"_get_memory_maxlen":{"params":[{"name":"self"}],"return":"int"},"_get_memory_maxlen_":{"params":[{"name":"self"}],"return":"int"},"get_observation_space":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"_get_observation_space":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"_get_observation_space_":{"params":[{"name":"self"}],"return":"D.T_agent[Space[D.T_observation]]"},"is_observation":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"bool"},"_is_observation":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"bool"},"get_observation_distribution":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"},{"name":"action","default":"None","annotation":"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],"return":"Distribution[D.T_agent[D.T_observation]]"},"_get_observation_distribution":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"},{"name":"action","default":"None","annotation":"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],"return":"Distribution[D.T_agent[D.T_observation]]"},"get_observation":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"},{"name":"action","default":"None","annotation":"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],"return":"D.T_agent[D.T_observation]"},"_get_observation":{"params":[{"name":"self"},{"name":"state","annotation":"D.T_state"},{"name":"action","default":"None","annotation":"Optional[D.T_agent[D.T_concurrency[D.T_event]]]"}],"return":"D.T_agent[D.T_observation]"},"render":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"},{"name":"**kwargs","annotation":"Any"}],"return":"Any"},"_render":{"params":[{"name":"self"},{"name":"memory","default":"None","annotation":"Optional[D.T_memory[D.T_state]]"},{"name":"**kwargs","annotation":"Any"}],"return":"Any"},"_render_from":{"params":[{"name":"self"},{"name":"memory","annotation":"D.T_memory[D.T_state]"},{"name":"**kwargs","annotation":"Any"}],"return":"Any"},"check_value":{"params":[{"name":"self"},{"name":"value","annotation":"Value[D.T_value]"}],"return":"bool"},"_check_value":{"params":[{"name":"self"},{"name":"value","annotation":"Value[D.T_value]"}],"return":"bool"},"_is_positive":{"params":[{"name":"self"},{"name":"cost","annotation":"D.T_value"}],"return":"bool"}},"solver":{"get_utility":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_value"},"_get_utility":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_value"},"get_q_value":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"D.T_value"},"_get_q_value":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"},{"name":"action","annotation":"D.T_agent[D.T_concurrency[D.T_event]]"}],"return":"D.T_value"},"ParallelSolver":{"params":[{"name":"domain_factory","annotation":"Callable[[], Domain]"},{"name":"parallel","default":"False","annotation":"bool"},{"name":"shared_memory_proxy","default":"None"}]},"_initialize":{"params":[{"name":"self"}]},"close":{"params":[{"name":"self"}]},"get_domain":{"params":[{"name":"self"}]},"call_domain_method":{"params":[{"name":"self"},{"name":"name"},{"name":"*args"}]},"sample_action":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_concurrency[D.T_event]]"},"_sample_action":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_concurrency[D.T_event]]"},"is_policy_defined_for":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"bool"},"_is_policy_defined_for":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"bool"},"get_next_action_distribution":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"},"_get_next_action_distribution":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"Distribution[D.T_agent[D.T_concurrency[D.T_event]]]"},"get_next_action":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_concurrency[D.T_event]]"},"_get_next_action":{"params":[{"name":"self"},{"name":"observation","annotation":"D.T_agent[D.T_observation]"}],"return":"D.T_agent[D.T_concurrency[D.T_event]]"},"save":{"params":[{"name":"self"},{"name":"path","annotation":"str"}],"return":"None"},"_save":{"params":[{"name":"self"},{"name":"path","annotation":"str"}],"return":"None"},"load":{"params":[{"name":"self"},{"name":"path","annotation":"str"},{"name":"domain_factory","annotation":"Callable[[], D]"}],"return":"None"},"_load":{"params":[{"name":"self"},{"name":"path","annotation":"str"},{"name":"domain_factory","annotation":"Callable[[], D]"}],"return":"None"},"_solve_domain":{"params":[{"name":"self"},{"name":"domain_factory","annotation":"Callable[[], D]"}],"return":"None"}}},"objects":{"Space":"/reference/_skdecide.core.html#space","ImplicitSpace":"/reference/_skdecide.core.html#implicitspace","EnumerableSpace":"/reference/_skdecide.core.html#enumerablespace","EmptySpace":"/reference/_skdecide.core.html#emptyspace","SamplableSpace":"/reference/_skdecide.core.html#samplablespace","SerializableSpace":"/reference/_skdecide.core.html#serializablespace","Distribution":"/reference/_skdecide.core.html#distribution","ImplicitDistribution":"/reference/_skdecide.core.html#implicitdistribution","DiscreteDistribution":"/reference/_skdecide.core.html#discretedistribution","SingleValueDistribution":"/reference/_skdecide.core.html#singlevaluedistribution","Value":"/reference/_skdecide.core.html#value","EnvironmentOutcome":"/reference/_skdecide.core.html#environmentoutcome","TransitionOutcome":"/reference/_skdecide.core.html#transitionoutcome","StrDict":"/reference/_skdecide.core.html#strdict","Constraint":"/reference/_skdecide.core.html#constraint","ImplicitConstraint":"/reference/_skdecide.core.html#implicitconstraint","BoundConstraint":"/reference/_skdecide.core.html#boundconstraint"}}')},function(e,t,i){function n(t){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(e.exports=n=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),n(t)}i(42),i(52),i(14),i(82),i(18),i(23),e.exports=n,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,i){"use strict";var n=i(1),r=i(104).indexOf,s=i(40),a=[].indexOf,o=!!a&&1/[1].indexOf(1,-0)<0,l=s("indexOf");n({target:"Array",proto:!0,forced:o||!l},{indexOf:function(e){return o?a.apply(this,arguments)||0:r(this,e,arguments.length>1?arguments[1]:void 0)}})},function(e,t,i){var n=i(8),r=i(34),s=i(4)("match");e.exports=function(e){var t;return n(e)&&(void 0!==(t=e[s])?!!t:"RegExp"==r(e))}},function(e,t,i){var n=i(2),r=i(3).RegExp;t.UNSUPPORTED_Y=n((function(){var e=r("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=n((function(){var e=r("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},function(e,t,i){"use strict";i(56);var n=i(13),r=i(97),s=i(2),a=i(4),o=i(32),l=a("species"),u=RegExp.prototype;e.exports=function(e,t,i,c){var d=a(e),h=!s((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),p=h&&!s((function(){var t=!1,i=/a/;return"split"===e&&((i={}).constructor={},i.constructor[l]=function(){return i},i.flags="",i[d]=/./[d]),i.exec=function(){return t=!0,null},i[d](""),!t}));if(!h||!p||i){var f=/./[d],m=t(d,""[e],(function(e,t,i,n,s){var a=t.exec;return a===r||a===u.exec?h&&!s?{done:!0,value:f.call(t,i,n)}:{done:!0,value:e.call(i,t,n)}:{done:!1}}));n(String.prototype,e,m[0]),n(u,d,m[1])}c&&o(u[d],"sham",!0)}},function(e,t,i){"use strict";var n=i(162).charAt;e.exports=function(e,t,i){return t+(i?n(e,t).length:1)}},function(e,t,i){var n=i(9),r=i(5),s=i(34),a=i(97);e.exports=function(e,t){var i=e.exec;if(r(i)){var o=i.call(e,t);return null!==o&&n(o),o}if("RegExp"===s(e))return a.call(e,t);throw TypeError("RegExp#exec called on incompatible receiver")}},function(e,t,i){"use strict";var n=i(1),r=i(47),s=i(16),a=i(40),o=[].join,l=r!=Object,u=a("join",",");n({target:"Array",proto:!0,forced:l||!u},{join:function(e){return o.call(s(this),void 0===e?",":e)}})},function(e,t,i){"use strict";var n,r=i(1),s=i(26).f,a=i(21),o=i(20),l=i(135),u=i(28),c=i(136),d=i(30),h="".startsWith,p=Math.min,f=c("startsWith");r({target:"String",proto:!0,forced:!!(d||f||(n=s(String.prototype,"startsWith"),!n||n.writable))&&!f},{startsWith:function(e){var t=o(u(this));l(e);var i=a(p(arguments.length>1?arguments[1]:void 0,t.length)),n=o(e);return h?h.call(t,n,i):t.slice(i,i+n.length)===n}})},function(e,t,i){var n=i(28),r=i(20),s="["+i(224)+"]",a=RegExp("^"+s+s+"*"),o=RegExp(s+s+"*$"),l=function(e){return function(t){var i=r(n(t));return 1&e&&(i=i.replace(a,"")),2&e&&(i=i.replace(o,"")),i}};e.exports={start:l(1),end:l(2),trim:l(3)}},function(e,t){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},function(e,t,i){"use strict";var n=i(62).PROPER,r=i(13),s=i(9),a=i(20),o=i(2),l=i(137),u=RegExp.prototype,c=u.toString,d=o((function(){return"/a/b"!=c.call({source:"a",flags:"b"})})),h=n&&"toString"!=c.name;(d||h)&&r(RegExp.prototype,"toString",(function(){var e=s(this),t=a(e.source),i=e.flags;return"/"+t+"/"+a(void 0===i&&e instanceof RegExp&&!("flags"in u)?l.call(e):i)}),{unsafe:!0})},function(e,t,i){"use strict";var n=i(17),r=i(11),s=i(4),a=i(7),o=s("species");e.exports=function(e){var t=n(e),i=r.f;a&&t&&!t[o]&&i(t,o,{configurable:!0,get:function(){return this}})}},function(e,t,i){var n=i(2),r=i(3).RegExp;e.exports=n((function(){var e=r(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)}))},function(e,t,i){var n=i(2),r=i(3).RegExp;e.exports=n((function(){var e=r("(?b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))},function(e,t,i){"use strict";var n=i(1),r=i(104).includes,s=i(99);n({target:"Array",proto:!0},{includes:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),s("includes")},function(e,t,i){"use strict";var n=i(1),r=i(135),s=i(28),a=i(20);n({target:"String",proto:!0,forced:!i(136)("includes")},{includes:function(e){return!!~a(s(this)).indexOf(a(r(e)),arguments.length>1?arguments[1]:void 0)}})},function(e,t,i){var n=i(194);e.exports=function(e,t,i){var r=null==e?void 0:n(e,t);return void 0===r?i:r}},function(e,t){e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},function(e,t,i){var n=i(7),r=i(48),s=i(16),a=i(72).f,o=function(e){return function(t){for(var i,o=s(t),l=r(o),u=l.length,c=0,d=[];u>c;)i=l[c++],n&&!a.call(o,i)||d.push(e?[i,o[i]]:o[i]);return d}};e.exports={entries:o(!0),values:o(!1)}},function(e,t,i){var n=i(5),r=i(8),s=i(74);e.exports=function(e,t,i){var a,o;return s&&n(a=t.constructor)&&a!==i&&r(o=a.prototype)&&o!==i.prototype&&s(e,o),e}},function(e,t,i){e.exports=i(421)},function(e,t,i){var n=i(5),r=i(8);e.exports=function(e,t){var i,s;if("string"===t&&n(i=e.toString)&&!r(s=i.call(e)))return s;if(n(i=e.valueOf)&&!r(s=i.call(e)))return s;if("string"!==t&&n(i=e.toString)&&!r(s=i.call(e)))return s;throw TypeError("Can't convert object to primitive value")}},function(e,t,i){var n=i(3),r=i(5),s=i(71),a=n.WeakMap;e.exports=r(a)&&/native code/.test(s(a))},function(e,t,i){"use strict";var n=i(150).IteratorPrototype,r=i(27),s=i(51),a=i(73),o=i(50),l=function(){return this};e.exports=function(e,t,i){var u=t+" Iterator";return e.prototype=r(n,{next:s(1,i)}),a(e,u,!1,!0),o[u]=l,e}},function(e,t,i){var n=i(5);e.exports=function(e){if("object"==typeof e||n(e))return e;throw TypeError("Can't set "+String(e)+" as a prototype")}},function(e,t,i){"use strict";var n,r,s,a,o=i(1),l=i(30),u=i(3),c=i(17),d=i(152),h=i(13),p=i(241),f=i(74),m=i(73),v=i(226),g=i(31),_=i(5),b=i(8),y=i(242),x=i(71),k=i(243),w=i(156),C=i(131),S=i(158).set,O=i(244),D=i(160),E=i(247),T=i(161),$=i(248),P=i(39),j=i(100),M=i(4),I=i(249),A=i(78),N=i(44),L=M("species"),F="Promise",V=P.get,z=P.set,R=P.getterFor(F),B=d&&d.prototype,H=d,W=B,q=u.TypeError,U=u.document,G=u.process,Y=T.f,K=Y,X=!!(U&&U.createEvent&&u.dispatchEvent),Z=_(u.PromiseRejectionEvent),Q=!1,J=j(F,(function(){var e=x(H),t=e!==String(H);if(!t&&66===N)return!0;if(l&&!W.finally)return!0;if(N>=51&&/native code/.test(e))return!1;var i=new H((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};return(i.constructor={})[L]=n,!(Q=i.then((function(){}))instanceof n)||!t&&I&&!Z})),ee=J||!w((function(e){H.all(e).catch((function(){}))})),te=function(e){var t;return!(!b(e)||!_(t=e.then))&&t},ie=function(e,t){if(!e.notified){e.notified=!0;var i=e.reactions;O((function(){for(var n=e.value,r=1==e.state,s=0;i.length>s;){var a,o,l,u=i[s++],c=r?u.ok:u.fail,d=u.resolve,h=u.reject,p=u.domain;try{c?(r||(2===e.rejection&&ae(e),e.rejection=1),!0===c?a=n:(p&&p.enter(),a=c(n),p&&(p.exit(),l=!0)),a===u.promise?h(q("Promise-chain cycle")):(o=te(a))?o.call(a,d,h):d(a)):h(n)}catch(e){p&&!l&&p.exit(),h(e)}}e.reactions=[],e.notified=!1,t&&!e.rejection&&re(e)}))}},ne=function(e,t,i){var n,r;X?((n=U.createEvent("Event")).promise=t,n.reason=i,n.initEvent(e,!1,!0),u.dispatchEvent(n)):n={promise:t,reason:i},!Z&&(r=u["on"+e])?r(n):"unhandledrejection"===e&&E("Unhandled promise rejection",i)},re=function(e){S.call(u,(function(){var t,i=e.facade,n=e.value;if(se(e)&&(t=$((function(){A?G.emit("unhandledRejection",n,i):ne("unhandledrejection",i,n)})),e.rejection=A||se(e)?2:1,t.error))throw t.value}))},se=function(e){return 1!==e.rejection&&!e.parent},ae=function(e){S.call(u,(function(){var t=e.facade;A?G.emit("rejectionHandled",t):ne("rejectionhandled",t,e.value)}))},oe=function(e,t,i){return function(n){e(t,n,i)}},le=function(e,t,i){e.done||(e.done=!0,i&&(e=i),e.value=t,e.state=2,ie(e,!0))},ue=function(e,t,i){if(!e.done){e.done=!0,i&&(e=i);try{if(e.facade===t)throw q("Promise can't be resolved itself");var n=te(t);n?O((function(){var i={done:!1};try{n.call(t,oe(ue,i,e),oe(le,i,e))}catch(t){le(i,t,e)}})):(e.value=t,e.state=1,ie(e,!1))}catch(t){le({done:!1},t,e)}}};if(J&&(W=(H=function(e){y(this,H,F),g(e),n.call(this);var t=V(this);try{e(oe(ue,t),oe(le,t))}catch(e){le(t,e)}}).prototype,(n=function(e){z(this,{type:F,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=p(W,{then:function(e,t){var i=R(this),n=Y(C(this,H));return n.ok=!_(e)||e,n.fail=_(t)&&t,n.domain=A?G.domain:void 0,i.parent=!0,i.reactions.push(n),0!=i.state&&ie(i,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),r=function(){var e=new n,t=V(e);this.promise=e,this.resolve=oe(ue,t),this.reject=oe(le,t)},T.f=Y=function(e){return e===H||e===s?new r(e):K(e)},!l&&_(d)&&B!==Object.prototype)){a=B.then,Q||(h(B,"then",(function(e,t){var i=this;return new H((function(e,t){a.call(i,e,t)})).then(e,t)}),{unsafe:!0}),h(B,"catch",W.catch,{unsafe:!0}));try{delete B.constructor}catch(e){}f&&f(B,W)}o({global:!0,wrap:!0,forced:J},{Promise:H}),m(H,F,!1,!0),v(F),s=c(F),o({target:F,stat:!0,forced:J},{reject:function(e){var t=Y(this);return t.reject.call(void 0,e),t.promise}}),o({target:F,stat:!0,forced:l||J},{resolve:function(e){return D(l&&this===s?H:this,e)}}),o({target:F,stat:!0,forced:ee},{all:function(e){var t=this,i=Y(t),n=i.resolve,r=i.reject,s=$((function(){var i=g(t.resolve),s=[],a=0,o=1;k(e,(function(e){var l=a++,u=!1;s.push(void 0),o++,i.call(t,e).then((function(e){u||(u=!0,s[l]=e,--o||n(s))}),r)})),--o||n(s)}));return s.error&&r(s.value),i.promise},race:function(e){var t=this,i=Y(t),n=i.reject,r=$((function(){var r=g(t.resolve);k(e,(function(e){r.call(t,e).then(i.resolve,n)}))}));return r.error&&n(r.value),i.promise}})},function(e,t,i){var n=i(13);e.exports=function(e,t,i){for(var r in t)n(e,r,t[r],i);return e}},function(e,t){e.exports=function(e,t,i){if(e instanceof t)return e;throw TypeError("Incorrect "+(i?i+" ":"")+"invocation")}},function(e,t,i){var n=i(9),r=i(153),s=i(21),a=i(75),o=i(154),l=i(108),u=i(155),c=function(e,t){this.stopped=e,this.result=t};e.exports=function(e,t,i){var d,h,p,f,m,v,g,_=i&&i.that,b=!(!i||!i.AS_ENTRIES),y=!(!i||!i.IS_ITERATOR),x=!(!i||!i.INTERRUPTED),k=a(t,_,1+b+x),w=function(e){return d&&u(d,"normal",e),new c(!0,e)},C=function(e){return b?(n(e),x?k(e[0],e[1],w):k(e[0],e[1])):x?k(e,w):k(e)};if(y)d=e;else{if(!(h=l(e)))throw TypeError(String(e)+" is not iterable");if(r(h)){for(p=0,f=s(e.length);f>p;p++)if((m=C(e[p]))&&m instanceof c)return m;return new c(!1)}d=o(e,h)}for(v=d.next;!(g=v.call(d)).done;){try{m=C(g.value)}catch(e){u(d,"throw",e)}if("object"==typeof m&&m&&m instanceof c)return m}return new c(!1)}},function(e,t,i){var n,r,s,a,o,l,u,c,d=i(3),h=i(26).f,p=i(158).set,f=i(159),m=i(245),v=i(246),g=i(78),_=d.MutationObserver||d.WebKitMutationObserver,b=d.document,y=d.process,x=d.Promise,k=h(d,"queueMicrotask"),w=k&&k.value;w||(n=function(){var e,t;for(g&&(e=y.domain)&&e.exit();r;){t=r.fn,r=r.next;try{t()}catch(e){throw r?a():s=void 0,e}}s=void 0,e&&e.enter()},f||g||v||!_||!b?!m&&x&&x.resolve?((u=x.resolve(void 0)).constructor=x,c=u.then,a=function(){c.call(u,n)}):a=g?function(){y.nextTick(n)}:function(){p.call(d,n)}:(o=!0,l=b.createTextNode(""),new _(n).observe(l,{characterData:!0}),a=function(){l.data=o=!o})),e.exports=w||function(e){var t={fn:e,next:void 0};s&&(s.next=t),r||(r=t,a()),s=t}},function(e,t,i){var n=i(60),r=i(3);e.exports=/ipad|iphone|ipod/i.test(n)&&void 0!==r.Pebble},function(e,t,i){var n=i(60);e.exports=/web0s(?!.*chrome)/i.test(n)},function(e,t,i){var n=i(3);e.exports=function(e,t){var i=n.console;i&&i.error&&(1===arguments.length?i.error(e):i.error(e,t))}},function(e,t){e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},function(e,t){e.exports="object"==typeof window},function(e,t,i){var n=i(1),r=i(251);n({target:"Object",stat:!0,forced:Object.assign!==r},{assign:r})},function(e,t,i){"use strict";var n=i(7),r=i(2),s=i(48),a=i(106),o=i(72),l=i(15),u=i(47),c=Object.assign,d=Object.defineProperty;e.exports=!c||r((function(){if(n&&1!==c({b:1},c(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},i=Symbol();return e[i]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=c({},e)[i]||"abcdefghijklmnopqrst"!=s(c({},t)).join("")}))?function(e,t){for(var i=l(e),r=arguments.length,c=1,d=a.f,h=o.f;r>c;)for(var p,f=u(arguments[c++]),m=d?s(f).concat(d(f)):s(f),v=m.length,g=0;v>g;)p=m[g++],n&&!h.call(f,p)||(i[p]=f[p]);return i}:c},function(e,t,i){"use strict";var n=i(1),r=i(30),s=i(152),a=i(2),o=i(17),l=i(5),u=i(131),c=i(160),d=i(13);if(n({target:"Promise",proto:!0,real:!0,forced:!!s&&a((function(){s.prototype.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=u(this,o("Promise")),i=l(e);return this.then(i?function(i){return c(t,e()).then((function(){return i}))}:e,i?function(i){return c(t,e()).then((function(){throw i}))}:e)}}),!r&&l(s)){var h=o("Promise").prototype.finally;s.prototype.finally!==h&&d(s.prototype,"finally",h,{unsafe:!0})}},function(e,t,i){"use strict";var n=i(109),r=i(76);e.exports=n?{}.toString:function(){return"[object "+r(this)+"]"}},function(e,t,i){var n=i(43),r=i(77),s=i(8),a=i(4)("species");e.exports=function(e){var t;return n(e)&&(t=e.constructor,(r(t)&&(t===Array||n(t.prototype))||s(t)&&null===(t=t[a]))&&(t=void 0)),void 0===t?Array:t}},function(e,t,i){"use strict";var n=i(1),r=i(256).left,s=i(40),a=i(44),o=i(78);n({target:"Array",proto:!0,forced:!s("reduce")||!o&&a>79&&a<83},{reduce:function(e){return r(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}})},function(e,t,i){var n=i(31),r=i(15),s=i(47),a=i(21),o=function(e){return function(t,i,o,l){n(i);var u=r(t),c=s(u),d=a(u.length),h=e?d-1:0,p=e?-1:1;if(o<2)for(;;){if(h in c){l=c[h],h+=p;break}if(h+=p,e?h<0:d<=h)throw TypeError("Reduce of empty array with no initial value")}for(;e?h>=0:d>h;h+=p)h in c&&(l=i(l,c[h],h,u));return l}};e.exports={left:o(!1),right:o(!0)}},function(e,t,i){var n=i(1),r=i(169),s=i(2),a=i(8),o=i(258).onFreeze,l=Object.freeze;n({target:"Object",stat:!0,forced:s((function(){l(1)})),sham:!r},{freeze:function(e){return l&&a(e)?l(o(e)):e}})},function(e,t,i){var n=i(1),r=i(49),s=i(8),a=i(10),o=i(11).f,l=i(45),u=i(170),c=i(65),d=i(169),h=!1,p=c("meta"),f=0,m=Object.isExtensible||function(){return!0},v=function(e){o(e,p,{value:{objectID:"O"+f++,weakData:{}}})},g=e.exports={enable:function(){g.enable=function(){},h=!0;var e=l.f,t=[].splice,i={};i[p]=1,e(i).length&&(l.f=function(i){for(var n=e(i),r=0,s=n.length;r1?arguments[1]:void 0,f=void 0!==p;f&&(p=n(p,h>2?arguments[2]:void 0,2));var m,v,g,_,b,y,x=d(t),k=0;if(!x||this==Array&&a(x))for(m=l(t.length),v=i?new this(m):Array(m);m>k;k++)y=f?p(t[k],k):t[k],u(v,k,y);else for(b=(_=c(t,x)).next,v=i?new this:[];!(g=b.call(_)).done;k++)y=f?s(_,p,[g.value,k],!0):g.value,u(v,k,y);return v.length=k,v}},function(e,t,i){var n=i(9),r=i(155);e.exports=function(e,t,i,s){try{return s?t(n(i)[0],i[1]):t(i)}catch(t){r(e,"throw",t)}}},function(e,t,i){var n=i(15),r=Math.floor,s="".replace,a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,o=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,t,i,l,u,c){var d=i+e.length,h=l.length,p=o;return void 0!==u&&(u=n(u),p=a),s.call(c,p,(function(n,s){var a;switch(s.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,i);case"'":return t.slice(d);case"<":a=u[s.slice(1,-1)];break;default:var o=+s;if(0===o)return n;if(o>h){var c=r(o/10);return 0===c?n:c<=h?void 0===l[c-1]?s.charAt(1):l[c-1]+s.charAt(1):n}a=l[o-1]}return void 0===a?"":a}))}},function(e,t,i){var n=i(175),r=i(264);e.exports=function e(t,i,s,a,o){var l=-1,u=t.length;for(s||(s=r),o||(o=[]);++l0&&s(c)?i>1?e(c,i-1,s,a,o):n(o,c):a||(o[o.length]=c)}return o}},function(e,t,i){var n=i(53),r=i(110),s=i(22),a=n?n.isConcatSpreadable:void 0;e.exports=function(e){return s(e)||r(e)||!!(a&&e&&e[a])}},function(e,t,i){var n=i(46),r=i(41);e.exports=function(e){return r(e)&&"[object Arguments]"==n(e)}},function(e,t,i){var n=i(53),r=Object.prototype,s=r.hasOwnProperty,a=r.toString,o=n?n.toStringTag:void 0;e.exports=function(e){var t=s.call(e,o),i=e[o];try{e[o]=void 0;var n=!0}catch(e){}var r=a.call(e);return n&&(t?e[o]=i:delete e[o]),r}},function(e,t){var i=Object.prototype.toString;e.exports=function(e){return i.call(e)}},function(e,t,i){var n=i(269),r=i(325),s=i(118),a=i(22),o=i(335);e.exports=function(e){return"function"==typeof e?e:null==e?s:"object"==typeof e?a(e)?r(e[0],e[1]):n(e):o(e)}},function(e,t,i){var n=i(270),r=i(324),s=i(193);e.exports=function(e){var t=r(e);return 1==t.length&&t[0][2]?s(t[0][0],t[0][1]):function(i){return i===e||n(i,e,t)}}},function(e,t,i){var n=i(177),r=i(181);e.exports=function(e,t,i,s){var a=i.length,o=a,l=!s;if(null==e)return!o;for(e=Object(e);a--;){var u=i[a];if(l&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++a-1}},function(e,t,i){var n=i(84);e.exports=function(e,t){var i=this.__data__,r=n(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this}},function(e,t,i){var n=i(83);e.exports=function(){this.__data__=new n,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,i){var n=i(83),r=i(111),s=i(113);e.exports=function(e,t){var i=this.__data__;if(i instanceof n){var a=i.__data__;if(!r||a.length<199)return a.push([e,t]),this.size=++i.size,this;i=this.__data__=new s(a)}return i.set(e,t),this.size=i.size,this}},function(e,t,i){var n=i(179),r=i(282),s=i(112),a=i(180),o=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,d=u.hasOwnProperty,h=RegExp("^"+c.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!s(e)||r(e))&&(n(e)?h:o).test(a(e))}},function(e,t,i){var n,r=i(283),s=(n=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";e.exports=function(e){return!!s&&s in e}},function(e,t,i){var n=i(24)["__core-js_shared__"];e.exports=n},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,i){var n=i(286),r=i(83),s=i(111);e.exports=function(){this.size=0,this.__data__={hash:new n,map:new(s||r),string:new n}}},function(e,t,i){var n=i(287),r=i(288),s=i(289),a=i(290),o=i(291);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,i){var n=i(183),r=i(347),s=i(352),a=i(184),o=i(353),l=i(114);e.exports=function(e,t,i){var u=-1,c=r,d=e.length,h=!0,p=[],f=p;if(i)h=!1,c=s;else if(d>=200){var m=t?null:o(e);if(m)return l(m);h=!1,c=a,f=new n}else f=t?[]:p;e:for(;++u-1}},function(e,t,i){var n=i(349),r=i(350),s=i(351);e.exports=function(e,t,i){return t==t?s(e,t,i):n(e,r,i)}},function(e,t){e.exports=function(e,t,i,n){for(var r=e.length,s=i+(n?1:-1);n?s--:++s1?arguments[1]:void 0)}}),s("findIndex")},function(e,t,i){var n=i(1),r=i(233).values;n({target:"Object",stat:!0},{values:function(e){return r(e)}})},function(e,t,i){"use strict";t.__esModule=!0,t.validateRangeInOneMonth=t.extractTimeFormat=t.extractDateFormat=t.nextYear=t.prevYear=t.nextMonth=t.prevMonth=t.changeYearMonthAndClampDate=t.timeWithinRange=t.limitTimeRange=t.clearMilliseconds=t.clearTime=t.modifyWithTimeString=t.modifyTime=t.modifyDate=t.range=t.getRangeMinutes=t.getMonthDays=t.getPrevMonthLastDays=t.getRangeHours=t.getWeekNumber=t.getStartDateOfMonth=t.nextDate=t.prevDate=t.getFirstDayOfMonth=t.getDayCountOfYear=t.getDayCountOfMonth=t.parseDate=t.formatDate=t.isDateObject=t.isDate=t.toDate=t.getI18nSettings=void 0;var n,r=i(196),s=(n=r)&&n.__esModule?n:{default:n},a=i(120);var o=["sun","mon","tue","wed","thu","fri","sat"],l=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],u=t.getI18nSettings=function(){return{dayNamesShort:o.map((function(e){return(0,a.t)("el.datepicker.weeks."+e)})),dayNames:o.map((function(e){return(0,a.t)("el.datepicker.weeks."+e)})),monthNamesShort:l.map((function(e){return(0,a.t)("el.datepicker.months."+e)})),monthNames:l.map((function(e,t){return(0,a.t)("el.datepicker.month"+(t+1))})),amPm:["am","pm"]}},c=t.toDate=function(e){return d(e)?new Date(e):null},d=t.isDate=function(e){return null!=e&&(!isNaN(new Date(e).getTime())&&!Array.isArray(e))},h=(t.isDateObject=function(e){return e instanceof Date},t.formatDate=function(e,t){return(e=c(e))?s.default.format(e,t||"yyyy-MM-dd",u()):""},t.parseDate=function(e,t){return s.default.parse(e,t||"yyyy-MM-dd",u())}),p=t.getDayCountOfMonth=function(e,t){return 3===t||5===t||8===t||10===t?30:1===t?e%4==0&&e%100!=0||e%400==0?29:28:31},f=(t.getDayCountOfYear=function(e){return e%400==0||e%100!=0&&e%4==0?366:365},t.getFirstDayOfMonth=function(e){var t=new Date(e.getTime());return t.setDate(1),t.getDay()},t.prevDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()-t)});t.nextDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)},t.getStartDateOfMonth=function(e,t){var i=new Date(e,t,1),n=i.getDay();return f(i,0===n?7:n)},t.getWeekNumber=function(e){if(!d(e))return null;var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var i=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-i.getTime())/864e5-3+(i.getDay()+6)%7)/7)},t.getRangeHours=function(e){var t=[],i=[];if((e||[]).forEach((function(e){var t=e.map((function(e){return e.getHours()}));i=i.concat(function(e,t){for(var i=[],n=e;n<=t;n++)i.push(n);return i}(t[0],t[1]))})),i.length)for(var n=0;n<24;n++)t[n]=-1===i.indexOf(n);else for(var r=0;r<24;r++)t[r]=!1;return t},t.getPrevMonthLastDays=function(e,t){if(t<=0)return[];var i=new Date(e.getTime());i.setDate(0);var n=i.getDate();return v(t).map((function(e,i){return n-(t-i-1)}))},t.getMonthDays=function(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0).getDate();return v(t).map((function(e,t){return t+1}))};function m(e,t,i,n){for(var r=t;r0?e.forEach((function(e){var n=e[0],r=e[1],s=n.getHours(),a=n.getMinutes(),o=r.getHours(),l=r.getMinutes();s===t&&o!==t?m(i,a,60,!0):s===t&&o===t?m(i,a,l+1,!0):s!==t&&o===t?m(i,0,l+1,!0):st&&m(i,0,60,!0)})):m(i,0,60,!0),i};var v=t.range=function(e){return Array.apply(null,{length:e}).map((function(e,t){return t}))},g=t.modifyDate=function(e,t,i,n){return new Date(t,i,n,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())},_=t.modifyTime=function(e,t,i,n){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),t,i,n,e.getMilliseconds())},b=(t.modifyWithTimeString=function(e,t){return null!=e&&t?(t=h(t,"HH:mm:ss"),_(e,t.getHours(),t.getMinutes(),t.getSeconds())):e},t.clearTime=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},t.clearMilliseconds=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),0)},t.limitTimeRange=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"HH:mm:ss";if(0===t.length)return e;var n=function(e){return s.default.parse(s.default.format(e,i),i)},r=n(e),a=t.map((function(e){return e.map(n)}));if(a.some((function(e){return r>=e[0]&&r<=e[1]})))return e;var o=a[0][0],l=a[0][0];a.forEach((function(e){o=new Date(Math.min(e[0],o)),l=new Date(Math.max(e[1],o))}));var u=r1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return y(e,i-t,n)},t.nextYear=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return y(e,i+t,n)},t.extractDateFormat=function(e){return e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim()},t.extractTimeFormat=function(e){return e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g,"").trim()},t.validateRangeInOneMonth=function(e,t){return e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}},function(e,t,i){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"确定",clear:"清空"},datepicker:{now:"此刻",today:"今天",cancel:"取消",clear:"清空",confirm:"确定",selectDate:"选择日期",selectTime:"选择时间",startDate:"开始日期",startTime:"开始时间",endDate:"结束日期",endTime:"结束时间",prevYear:"前一年",nextYear:"后一年",prevMonth:"上个月",nextMonth:"下个月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},cascader:{noMatch:"无匹配数据",loading:"加载中",placeholder:"请选择",noData:"暂无数据"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页"},messagebox:{title:"提示",confirm:"确定",cancel:"取消",error:"输入的数据不合法!"},upload:{deleteTip:"按 delete 键可删除",delete:"删除",preview:"查看图片",continue:"继续上传"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计"},tree:{emptyText:"暂无数据"},transfer:{noMatch:"无匹配数据",noData:"无数据",titles:["列表 1","列表 2"],filterPlaceholder:"请输入搜索内容",noCheckedFormat:"共 {total} 项",hasCheckedFormat:"已选 {checked}/{total} 项"},image:{error:"加载失败"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"确定",cancelButtonText:"取消"},empty:{description:"暂无数据"}}}},function(e,t,i){"use strict";var n=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===r}(e)}(e)};var r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function s(e,t){var i;return t&&!0===t.clone&&n(e)?o((i=e,Array.isArray(i)?[]:{}),e,t):e}function a(e,t,i){var r=e.slice();return t.forEach((function(t,a){void 0===r[a]?r[a]=s(t,i):n(t)?r[a]=o(e[a],t,i):-1===e.indexOf(t)&&r.push(s(t,i))})),r}function o(e,t,i){var r=Array.isArray(t);return r===Array.isArray(e)?r?((i||{arrayMerge:a}).arrayMerge||a)(e,t,i):function(e,t,i){var r={};return n(e)&&Object.keys(e).forEach((function(t){r[t]=s(e[t],i)})),Object.keys(t).forEach((function(a){n(t[a])&&e[a]?r[a]=o(e[a],t[a],i):r[a]=s(t[a],i)})),r}(e,t,i):s(t,i)}o.all=function(e,t){if(!Array.isArray(e)||e.length<2)throw new Error("first argument should be an array with at least two elements");return e.reduce((function(e,i){return o(e,i,t)}))};var l=o;e.exports=l},function(e,t,i){"use strict";t.__esModule=!0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.default=function(e){return function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),a=1;a0){var n=t[t.length-1];if(n.id===e){if(n.modalClass)n.modalClass.trim().split(/\s+/).forEach((function(e){return(0,a.removeClass)(i,e)}));t.pop(),t.length>0&&(i.style.zIndex=t[t.length-1].zIndex)}else for(var r=t.length-1;r>=0;r--)if(t[r].id===e){t.splice(r,1);break}}0===t.length&&(this.modalFade&&(0,a.addClass)(i,"v-modal-leave"),setTimeout((function(){0===t.length&&(i.parentNode&&i.parentNode.removeChild(i),i.style.display="none",h.modalDom=void 0),(0,a.removeClass)(i,"v-modal-leave")}),200))}};Object.defineProperty(h,"zIndex",{configurable:!0,get:function(){return l||(u=u||(s.default.prototype.$ELEMENT||{}).zIndex||2e3,l=!0),u},set:function(e){u=e}});s.default.prototype.$isServer||window.addEventListener("keydown",(function(e){if(27===e.keyCode){var t=function(){if(!s.default.prototype.$isServer&&h.modalStack.length>0){var e=h.modalStack[h.modalStack.length-1];if(!e)return;return h.getInstance(e.id)}}();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction("cancel"):t.close())}})),t.default=h},function(e,t,i){"use strict";var n,r;"function"==typeof Symbol&&Symbol.iterator;void 0===(r="function"==typeof(n=function(){var e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function i(e,i,n){this._reference=e.jquery?e[0]:e,this.state={};var r=null==i,s=i&&"[object Object]"===Object.prototype.toString.call(i);return this._popper=r||s?this.parse(s?i:{}):i.jquery?i[0]:i,this._options=Object.assign({},t,n),this._options.modifiers=this._options.modifiers.map(function(e){if(-1===this._options.modifiersIgnored.indexOf(e))return"applyStyle"===e&&this._popper.setAttribute("x-placement",this._options.placement),this.modifiers[e]||e}.bind(this)),this.state.position=this._getPosition(this._popper,this._reference),c(this._popper,{position:this.state.position,top:0}),this.update(),this._setupEventListeners(),this}function n(t){var i=t.style.display,n=t.style.visibility;t.style.display="block",t.style.visibility="hidden",t.offsetWidth;var r=e.getComputedStyle(t),s=parseFloat(r.marginTop)+parseFloat(r.marginBottom),a=parseFloat(r.marginLeft)+parseFloat(r.marginRight),o={width:t.offsetWidth+a,height:t.offsetHeight+s};return t.style.display=i,t.style.visibility=n,o}function r(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,(function(e){return t[e]}))}function s(e){var t=Object.assign({},e);return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function a(e,t){var i,n=0;for(i in e){if(e[i]===t)return n;n++}return null}function o(t,i){return e.getComputedStyle(t,null)[i]}function l(t){var i=t.offsetParent;return i!==e.document.body&&i?i:e.document.documentElement}function u(t){var i=t.parentNode;return i?i===e.document?e.document.body.scrollTop||e.document.body.scrollLeft?e.document.body:e.document.documentElement:-1!==["scroll","auto"].indexOf(o(i,"overflow"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-x"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-y"))?i:u(t.parentNode):t}function c(e,t){Object.keys(t).forEach((function(i){var n,r="";-1!==["width","height","top","right","bottom","left"].indexOf(i)&&""!==(n=t[i])&&!isNaN(parseFloat(n))&&isFinite(n)&&(r="px"),e.style[i]=t[i]+r}))}function d(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.offsetLeft,top:e.offsetTop};return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function h(e){var t=e.getBoundingClientRect(),i=-1!=navigator.userAgent.indexOf("MSIE")&&"HTML"===e.tagName?-e.scrollTop:t.top;return{left:t.left,top:i,right:t.right,bottom:t.bottom,width:t.right-t.left,height:t.bottom-i}}function p(t){for(var i=["","ms","webkit","moz","o"],n=0;n1&&console.warn("WARNING: the given `parent` query("+t.parent+") matched more than one element, the first one will be used"),0===a.length)throw"ERROR: the given `parent` doesn't exists!";a=a[0]}return a.length>1&&a instanceof Element==0&&(console.warn("WARNING: you have passed as parent a list of elements, the first one will be used"),a=a[0]),a.appendChild(r),r;function o(e,t){t.forEach((function(t){e.classList.add(t)}))}function l(e,t){t.forEach((function(t){e.setAttribute(t.split(":")[0],t.split(":")[1]||"")}))}},i.prototype._getPosition=function(t,i){return l(i),this._options.forceAbsolute?"absolute":function t(i){return i!==e.document.body&&("fixed"===o(i,"position")||(i.parentNode?t(i.parentNode):i))}(i)?"fixed":"absolute"},i.prototype._getOffsets=function(e,t,i){i=i.split("-")[0];var r={};r.position=this.state.position;var s="fixed"===r.position,a=function(e,t,i){var n=h(e),r=h(t);if(i){var s=u(t);r.top+=s.scrollTop,r.bottom+=s.scrollTop,r.left+=s.scrollLeft,r.right+=s.scrollLeft}return{top:n.top-r.top,left:n.left-r.left,bottom:n.top-r.top+n.height,right:n.left-r.left+n.width,width:n.width,height:n.height}}(t,l(e),s),o=n(e);return-1!==["right","left"].indexOf(i)?(r.top=a.top+a.height/2-o.height/2,r.left="left"===i?a.left-o.width:a.right):(r.left=a.left+a.width/2-o.width/2,r.top="top"===i?a.top-o.height:a.bottom),r.width=o.width,r.height=o.height,{popper:r,reference:a}},i.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement){var t=u(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener("scroll",this.state.updateBound),this.state.scrollTarget=t}},i.prototype._removeEventListeners=function(){e.removeEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener("scroll",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},i.prototype._getBoundaries=function(t,i,n){var r,s,a={};if("window"===n){var o=e.document.body,c=e.document.documentElement;r=Math.max(o.scrollHeight,o.offsetHeight,c.clientHeight,c.scrollHeight,c.offsetHeight),a={top:0,right:Math.max(o.scrollWidth,o.offsetWidth,c.clientWidth,c.scrollWidth,c.offsetWidth),bottom:r,left:0}}else if("viewport"===n){var h=l(this._popper),p=u(this._popper),f=d(h),m="fixed"===t.offsets.popper.position?0:(s=p)==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):s.scrollTop,v="fixed"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft}(p);a={top:0-(f.top-m),right:e.document.documentElement.clientWidth-(f.left-v),bottom:e.document.documentElement.clientHeight-(f.top-m),left:0-(f.left-v)}}else a=l(this._popper)===n?{top:0,left:0,right:n.clientWidth,bottom:n.clientHeight}:d(n);return a.left+=i,a.right-=i,a.top=a.top+i,a.bottom=a.bottom-i,a},i.prototype.runModifiers=function(e,t,i){var n=t.slice();return void 0!==i&&(n=this._options.modifiers.slice(0,a(this._options.modifiers,i))),n.forEach(function(t){var i;(i=t)&&"[object Function]"==={}.toString.call(i)&&(e=t.call(this,e))}.bind(this)),e},i.prototype.isModifierRequired=function(e,t){var i=a(this._options.modifiers,e);return!!this._options.modifiers.slice(0,i).filter((function(e){return e===t})).length},i.prototype.modifiers={},i.prototype.modifiers.applyStyle=function(e){var t,i={position:e.offsets.popper.position},n=Math.round(e.offsets.popper.left),r=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=p("transform"))?(i[t]="translate3d("+n+"px, "+r+"px, 0)",i.top=0,i.left=0):(i.left=n,i.top=r),Object.assign(i,e.styles),c(this._popper,i),this._popper.setAttribute("x-placement",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&c(e.arrowElement,e.offsets.arrow),e},i.prototype.modifiers.shift=function(e){var t=e.placement,i=t.split("-")[0],n=t.split("-")[1];if(n){var r=e.offsets.reference,a=s(e.offsets.popper),o={y:{start:{top:r.top},end:{top:r.top+r.height-a.height}},x:{start:{left:r.left},end:{left:r.left+r.width-a.width}}},l=-1!==["bottom","top"].indexOf(i)?"x":"y";e.offsets.popper=Object.assign(a,o[l][n])}return e},i.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,i=s(e.offsets.popper),n={left:function(){var t=i.left;return i.lefte.boundaries.right&&(t=Math.min(i.left,e.boundaries.right-i.width)),{left:t}},top:function(){var t=i.top;return i.tope.boundaries.bottom&&(t=Math.min(i.top,e.boundaries.bottom-i.height)),{top:t}}};return t.forEach((function(t){e.offsets.popper=Object.assign(i,n[t]())})),e},i.prototype.modifiers.keepTogether=function(e){var t=s(e.offsets.popper),i=e.offsets.reference,n=Math.floor;return t.rightn(i.right)&&(e.offsets.popper.left=n(i.right)),t.bottomn(i.bottom)&&(e.offsets.popper.top=n(i.bottom)),e},i.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn("WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split("-")[0],i=r(t),n=e.placement.split("-")[1]||"",a=[];return(a="flip"===this._options.flipBehavior?[t,i]:this._options.flipBehavior).forEach(function(o,l){if(t===o&&a.length!==l+1){t=e.placement.split("-")[0],i=r(t);var u=s(e.offsets.popper),c=-1!==["right","bottom"].indexOf(t);(c&&Math.floor(e.offsets.reference[t])>Math.floor(u[i])||!c&&Math.floor(e.offsets.reference[t])o[p]&&(e.offsets.popper[d]+=l[d]+f-o[p]);var m=l[d]+(i||l[c]/2-f/2)-o[d];return m=Math.max(Math.min(o[c]-f-8,m),8),r[d]=m,r[h]="",e.offsets.arrow=r,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(null==e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),i=1;i0},e.prototype.connect_=function(){r&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),l?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){r&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,i=void 0===t?"":t;o.some((function(e){return!!~i.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),c=function(e,t){for(var i=0,n=Object.keys(t);i0},e}(),k="undefined"!=typeof WeakMap?new WeakMap:new n,w=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var i=u.getInstance(),n=new x(t,i,this);k.set(this,n)};["observe","unobserve","disconnect"].forEach((function(e){w.prototype[e]=function(){var t;return(t=k.get(this))[e].apply(t,arguments)}}));var C=void 0!==s.ResizeObserver?s.ResizeObserver:w;t.default=C},function(e,t,i){"use strict";t.__esModule=!0;var n=i(25);var r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.beforeEnter=function(e){(0,n.addClass)(e,"collapse-transition"),e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height="0",e.style.paddingTop=0,e.style.paddingBottom=0},e.prototype.enter=function(e){e.dataset.oldOverflow=e.style.overflow,0!==e.scrollHeight?(e.style.height=e.scrollHeight+"px",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom):(e.style.height="",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom),e.style.overflow="hidden"},e.prototype.afterEnter=function(e){(0,n.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow},e.prototype.beforeLeave=function(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.height=e.scrollHeight+"px",e.style.overflow="hidden"},e.prototype.leave=function(e){0!==e.scrollHeight&&((0,n.addClass)(e,"collapse-transition"),e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0)},e.prototype.afterLeave=function(e){(0,n.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},e}();t.default={name:"ElCollapseTransition",functional:!0,render:function(e,t){var i=t.children;return e("transition",{on:new r},i)}}},function(e,t,i){"use strict";t.__esModule=!0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.isVNode=function(e){return null!==e&&"object"===(void 0===e?"undefined":n(e))&&(0,r.hasOwn)(e,"componentOptions")};var r=i(19)},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=140)}({140:function(e,t,i){"use strict";i.r(t);var n=i(5),r=i.n(n),s=i(18),a=i.n(s),o=i(2),l=i(3),u=i(7),c=i.n(u),d={name:"ElTooltip",mixins:[r.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+Object(l.generateId)(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new c.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=a()(200,(function(){return e.handleClosePopper()})))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var i=this.getFirstElement();if(!i)return null;var n=i.data=i.data||{};return n.staticClass=this.addTooltipClass(n.staticClass),i},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),Object(o.on)(this.referenceElm,"mouseenter",this.show),Object(o.on)(this.referenceElm,"mouseleave",this.hide),Object(o.on)(this.referenceElm,"focus",(function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()})),Object(o.on)(this.referenceElm,"blur",this.handleBlur),Object(o.on)(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick((function(){e.value&&e.updatePopper()}))},watch:{focusing:function(e){e?Object(o.addClass)(this.referenceElm,"focusing"):Object(o.removeClass)(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout((function(){e.showPopper=!0}),this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout((function(){e.showPopper=!1}),this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;i2&&void 0!==arguments[2]?arguments[2]:300,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!t)throw new Error("instance & callback is required");var r=!1,s=function(){r||(r=!0,t&&t.apply(null,arguments))};n?e.$once("after-leave",s):e.$on("after-leave",s),setTimeout((function(){s()}),i+100)}},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=90)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},90:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?i("div",{staticClass:"el-progress-bar"},[i("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[i("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?i("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):i("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[i("svg",{attrs:{viewBox:"0 0 100 100"}},[i("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),i("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":e.strokeLinecap,"stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?i("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?i("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};n._withStripped=!0;var r={name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},strokeLinecap:{type:String,default:"round"},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort((function(e,t){return e.percentage-t.percentage})),i=0;ie)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map((function(e,i){return"string"==typeof e?{color:e,percentage:(i+1)*t}:e}))}}},s=i(0),a=Object(s.a)(r,n,[],!1,null,null,null);a.options.__file="packages/progress/src/progress.vue";var o=a.exports;o.install=function(e){e.component(o.name,o)};t.default=o}})},function(e,t,i){var n=i(125),r=i(91);e.exports={throttle:n,debounce:r}},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=61)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},10:function(e,t){e.exports=i(123)},12:function(e,t){e.exports=i(200)},15:function(e,t){e.exports=i(126)},16:function(e,t){e.exports=i(124)},18:function(e,t){e.exports=i(91)},21:function(e,t){e.exports=i(90)},22:function(e,t){e.exports=i(127)},3:function(e,t){e.exports=i(19)},31:function(e,t){e.exports=i(128)},33:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};n._withStripped=!0;var r=i(4),s=i.n(r),a=i(3),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={mixins:[s.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,r=i.valueKey;if(!this.created&&!n){if(r&&"object"===(void 0===e?"undefined":o(e))&&"object"===(void 0===t?"undefined":o(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some((function(e){return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}))}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(a.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),r=i.indexOf(this);n>-1&&r<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},u=i(0),c=Object(u.a)(l,n,[],!1,null,null,null);c.options.__file="packages/select/src/option.vue";t.a=c.exports},37:function(e,t){e.exports=i(203)},4:function(e,t){e.exports=i(36)},5:function(e,t){e.exports=i(88)},6:function(e,t){e.exports=i(121)},61:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,(function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])})),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.selectOption(t))},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return!("button"in t)&&e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?null:e.deletePrevTag(t)},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1,tabindex:e.multiple&&e.filterable?"-1":null},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.debouncedOnInputChange},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.selectOption(t))},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)};n._withStripped=!0;var r=i(4),s=i.n(r),a=i(22),o=i.n(a),l=i(6),u=i.n(l),c=i(10),d=i.n(c),h=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};h._withStripped=!0;var p=i(5),f={name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[i.n(p).a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",(function(){e.$parent.visible&&e.updatePopper()})),this.$on("destroyPopper",this.destroyPopper)}},m=i(0),v=Object(m.a)(f,h,[],!1,null,null,null);v.options.__file="packages/select/src/select-dropdown.vue";var g=v.exports,_=i(33),b=i(37),y=i.n(b),x=i(15),k=i.n(x),w=i(18),C=i.n(w),S=i(12),O=i.n(S),D=i(16),E=i(31),T=i.n(E),$=i(3),P=i(21),j={mixins:[s.a,u.a,o()("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter((function(e){return e.visible})).every((function(e){return e.disabled}))}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach((function(e){e.hover=t.hoverOption===e}))}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick((function(){return t.scrollToOption(t.hoverOption)}))}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object($.isIE)()&&!Object($.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter((function(e){return!e.created})).some((function(t){return t.currentLabel===e.query}));return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"},propPlaceholder:function(){return void 0!==this.placeholder?this.placeholder:this.t("el.select.placeholder")}},components:{ElInput:d.a,ElSelectMenu:g,ElOption:_.a,ElTag:y.a,ElScrollbar:k.a},directives:{Clickoutside:O.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,required:!1},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick((function(){e.resetInputHeight()}))},propPlaceholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object($.valueEquals)(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick((function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)})),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick((function(){e.broadcast("ElSelectDropdown","updatePopper")})),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick((function(e){return t.handleQueryChange(i)}));else{var n=i[i.length-1]||"";this.isOnComposition=!Object(P.isKorean)(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick((function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")})),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick((function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()})),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var i=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");T()(i,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick((function(){return e.scrollToOption(e.selected)}))},emitChange:function(e){Object($.valueEquals)(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),r="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),s=this.cachedOptions.length-1;s>=0;s--){var a=this.cachedOptions[s];if(i?Object($.getValueByPath)(a.value,this.valueKey)===Object($.getValueByPath)(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var o={value:e,currentLabel:i||n||r?"":String(e)};return this.multiple&&(o.hitState=!1),o},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach((function(t){i.push(e.getOption(t))})),this.selected=i,this.$nextTick((function(){e.resetInputHeight()}))},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.filterable&&(this.menuVisibleOnFocus=!0)),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout((function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)}),50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick((function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,(function(e){return"INPUT"===e.tagName}))[0],n=e.$refs.tags,r=n?Math.round(n.getBoundingClientRect().height):0,s=e.initialInputHeight||40;i.style.height=0===e.selected.length?s+"px":Math.max(n?r+(r>s?6:0):0,s)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}}))},resetHoverIndex:function(){var e=this;setTimeout((function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map((function(t){return e.options.indexOf(t)}))):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)}),300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),r=this.getValueIndex(n,e.value);r>-1?n.splice(r,1):(this.multipleLimit<=0||n.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],i="[object object]"===Object.prototype.toString.call(t).toLowerCase();if(i){var n=this.valueKey,r=-1;return e.some((function(e,i){return Object($.getValueByPath)(e,n)===Object($.getValueByPath)(t,n)&&(r=i,!0)})),r}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object($.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.propPlaceholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=C()(this.debounce,(function(){e.onInputChange()})),this.debouncedQueryChange=C()(this.debounce,(function(t){e.handleQueryChange(t.target.value)})),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object(D.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick((function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)})),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(D.removeResizeListener)(this.$el,this.handleResize)}},M=Object(m.a)(j,n,[],!1,null,null,null);M.options.__file="packages/select/src/select.vue";var I=M.exports;I.install=function(e){e.component(I.name,I)};t.default=I}})},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=53)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},3:function(e,t){e.exports=i(19)},33:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};n._withStripped=!0;var r=i(4),s=i.n(r),a=i(3),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={mixins:[s.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,r=i.valueKey;if(!this.created&&!n){if(r&&"object"===(void 0===e?"undefined":o(e))&&"object"===(void 0===t?"undefined":o(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some((function(e){return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}))}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(a.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){var e=this.select,t=e.selected,i=e.multiple?t:[t],n=this.select.cachedOptions.indexOf(this),r=i.indexOf(this);n>-1&&r<0&&this.select.cachedOptions.splice(n,1),this.select.onOptionDestroy(this.select.options.indexOf(this))}},u=i(0),c=Object(u.a)(l,n,[],!1,null,null,null);c.options.__file="packages/select/src/option.vue";t.a=c.exports},4:function(e,t){e.exports=i(36)},53:function(e,t,i){"use strict";i.r(t);var n=i(33);n.a.install=function(e){e.component(n.a.name,n.a)},t.default=n.a}})},function(e,t,i){e.exports=i(379)},function(e,t,i){"use strict";var n=i(380),r=i(381);function s(e){var t=0,i=0,n=0,r=0;return"detail"in e&&(i=e.detail),"wheelDelta"in e&&(i=-e.wheelDelta/120),"wheelDeltaY"in e&&(i=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=i,i=0),n=10*t,r=10*i,"deltaY"in e&&(r=e.deltaY),"deltaX"in e&&(n=e.deltaX),(n||r)&&e.deltaMode&&(1==e.deltaMode?(n*=40,r*=40):(n*=800,r*=800)),n&&!t&&(t=n<1?-1:1),r&&!i&&(i=r<1?-1:1),{spinX:t,spinY:i,pixelX:n,pixelY:r}}s.getEventType=function(){return n.firefox()?"DOMMouseScroll":r("wheel")?"wheel":"mousewheel"},e.exports=s},function(e,t){var i,n,r,s,a,o,l,u,c,d,h,p,f,m,v,g=!1;function _(){if(!g){g=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),_=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(p=/\b(iPhone|iP[ao]d)/.exec(e),f=/\b(iP[ao]d)/.exec(e),d=/Android/i.exec(e),m=/FBAN\/\w+;/i.exec(e),v=/Mobile/i.exec(e),h=!!/Win64/.exec(e),t){(i=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN)&&document&&document.documentMode&&(i=document.documentMode);var b=/(?:Trident\/(\d+.\d+))/.exec(e);o=b?parseFloat(b[1])+4:i,n=t[2]?parseFloat(t[2]):NaN,r=t[3]?parseFloat(t[3]):NaN,(s=t[4]?parseFloat(t[4]):NaN)?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),a=t&&t[1]?parseFloat(t[1]):NaN):a=NaN}else i=n=r=a=s=NaN;if(_){if(_[1]){var y=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);l=!y||parseFloat(y[1].replace("_","."))}else l=!1;u=!!_[2],c=!!_[3]}else l=u=c=!1}}var b={ie:function(){return _()||i},ieCompatibilityMode:function(){return _()||o>i},ie64:function(){return b.ie()&&h},firefox:function(){return _()||n},opera:function(){return _()||r},webkit:function(){return _()||s},safari:function(){return b.webkit()},chrome:function(){return _()||a},windows:function(){return _()||u},osx:function(){return _()||l},linux:function(){return _()||c},iphone:function(){return _()||p},mobile:function(){return _()||p||f||d||v},nativeApp:function(){return _()||m},android:function(){return _()||d},ipad:function(){return _()||f}};e.exports=b},function(e,t,i){"use strict";var n,r=i(382);r.canUseDOM&&(n=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")) /** * Checks if an event is supported in the current execution environment. * @@ -20,7 +20,7 @@ var n=Object.freeze({});function r(e){return null==e}function s(e){return null!= * @return {boolean} True if the event is supported. * @internal * @license Modernizr 3.0.0pre (Custom Build) | MIT - */,e.exports=function(e,t){if(!r.canUseDOM||t&&!("addEventListener"in document))return!1;var i="on"+e,s=i in document;if(!s){var a=document.createElement("div");a.setAttribute(i,"return;"),s="function"==typeof a[i]}return!s&&n&&"wheel"===e&&(s=document.implementation.hasFeature("Events.wheel","3.0")),s}},function(e,t,i){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:n,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n};e.exports=r},function(e,t,i){"use strict";t.__esModule=!0;var n,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=i(129),a=(n=s)&&n.__esModule?n:{default:n};var o,l=l||{};l.Dialog=function(e,t,i){var n=this;if(this.dialogNode=e,null===this.dialogNode||"dialog"!==this.dialogNode.getAttribute("role"))throw new Error("Dialog() requires a DOM element with ARIA role of dialog.");"string"==typeof t?this.focusAfterClosed=document.getElementById(t):"object"===(void 0===t?"undefined":r(t))?this.focusAfterClosed=t:this.focusAfterClosed=null,"string"==typeof i?this.focusFirst=document.getElementById(i):"object"===(void 0===i?"undefined":r(i))?this.focusFirst=i:this.focusFirst=null,this.focusFirst?this.focusFirst.focus():a.default.focusFirstDescendant(this.dialogNode),this.lastFocus=document.activeElement,o=function(e){n.trapFocus(e)},this.addListeners()},l.Dialog.prototype.addListeners=function(){document.addEventListener("focus",o,!0)},l.Dialog.prototype.removeListeners=function(){document.removeEventListener("focus",o,!0)},l.Dialog.prototype.closeDialog=function(){var e=this;this.removeListeners(),this.focusAfterClosed&&setTimeout((function(){e.focusAfterClosed.focus()}))},l.Dialog.prototype.trapFocus=function(e){a.default.IgnoreUtilFocusChanges||(this.dialogNode.contains(e.target)?this.lastFocus=e.target:(a.default.focusFirstDescendant(this.dialogNode),this.lastFocus===document.activeElement&&a.default.focusLastDescendant(this.dialogNode),this.lastFocus=document.activeElement))},t.default=l.Dialog},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=e,l=i,d=n;if("function"==typeof l&&(d=l,l={}),!this.rules||0===Object.keys(this.rules).length)return d&&d(),Promise.resolve();function h(e){var t,i,n=void 0,r=[],s={};for(n=0;n0&&void 0!==arguments[0]?arguments[0]:[],u=s;if(Array.isArray(u)||(u=[u]),!l.suppressWarning&&u.length&&c.warning("async-validator:",u),u.length&&i.message&&(u=[].concat(i.message)),u=u.map((0,a.complementError)(i)),l.first&&u.length)return _[i.field]=1,t(u);if(n){if(i.required&&!e.value)return u=i.message?[].concat(i.message).map((0,a.complementError)(i)):l.error?[l.error(i,(0,a.format)(l.messages.required,i.field))]:[],t(u);var d={};if(i.defaultField)for(var h in e.value)e.value.hasOwnProperty(h)&&(d[h]=i.defaultField);for(var p in d=r({},d,e.rule.fields))if(d.hasOwnProperty(p)){var f=Array.isArray(d[p])?d[p]:[d[p]];d[p]=f.map(o.bind(null,p))}var m=new c(d);m.messages(l.messages),e.rule.options&&(e.rule.options.messages=l.messages,e.rule.options.error=l.error),m.validate(e.value,e.rule.options||l,(function(e){var i=[];u&&u.length&&i.push.apply(i,u),e&&e.length&&i.push.apply(i,e),t(i.length?i:null)}))}else t(u)}n=n&&(i.required||!i.required&&e.value),i.field=e.field;var d=void 0;i.asyncValidator?d=i.asyncValidator(i,e.value,u,e.source,l):i.validator&&(!0===(d=i.validator(i,e.value,u,e.source,l))?u():!1===d?u(i.message||i.field+" fails"):d instanceof Array?u(d):d instanceof Error&&u(d.message)),d&&d.then&&d.then((function(){return u()}),(function(e){return u(e)}))}),(function(e){h(e)}))},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!l.default.hasOwnProperty(e.type))throw new Error((0,a.format)("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;var t=Object.keys(e),i=t.indexOf("message");return-1!==i&&t.splice(i,1),1===t.length&&"required"===t[0]?l.default.required:l.default[this.getType(e)]||!1}},c.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");l.default[e]=t},c.warning=a.warning,c.messages=u.messages,t.default=c},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=g(i(386)),r=g(i(392)),s=g(i(393)),a=g(i(394)),o=g(i(395)),l=g(i(396)),u=g(i(397)),c=g(i(398)),d=g(i(399)),h=g(i(400)),p=g(i(401)),f=g(i(402)),m=g(i(403)),v=g(i(404));function g(e){return e&&e.__esModule?e:{default:e}}t.default={string:n.default,method:r.default,number:s.default,boolean:a.default,regexp:o.default,integer:l.default,float:u.default,array:c.default,object:d.default,enum:h.default,pattern:p.default,date:f.default,url:v.default,hex:v.default,email:v.default,required:m.default}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t,"string")&&!e.required)return i();s.default.required(e,t,n,o,r,"string"),(0,a.isEmptyValue)(t,"string")||(s.default.type(e,t,n,o,r),s.default.range(e,t,n,o,r),s.default.pattern(e,t,n,o,r),!0===e.whitespace&&s.default.whitespace(e,t,n,o,r))}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6));t.default=function(e,t,i,r,s){(/^\s+$/.test(t)||""===t)&&r.push(n.format(s.messages.whitespace,e.fullField))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6)),a=i(204),o=(n=a)&&n.__esModule?n:{default:n};var l={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},u={integer:function(e){return u.number(e)&&parseInt(e,10)===e},float:function(e){return u.number(e)&&!u.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"===(void 0===e?"undefined":r(e))&&!u.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(l.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(l.url)},hex:function(e){return"string"==typeof e&&!!e.match(l.hex)}};t.default=function(e,t,i,n,a){if(e.required&&void 0===t)(0,o.default)(e,t,i,n,a);else{var l=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(l)>-1?u[l](t)||n.push(s.format(a.messages.types[l],e.fullField,e.type)):l&&(void 0===t?"undefined":r(t))!==e.type&&n.push(s.format(a.messages.types[l],e.fullField,e.type))}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6));t.default=function(e,t,i,r,s){var a="number"==typeof e.len,o="number"==typeof e.min,l="number"==typeof e.max,u=t,c=null,d="number"==typeof t,h="string"==typeof t,p=Array.isArray(t);if(d?c="number":h?c="string":p&&(c="array"),!c)return!1;p&&(u=t.length),h&&(u=t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),a?u!==e.len&&r.push(n.format(s.messages[c].len,e.fullField,e.len)):o&&!l&&ue.max?r.push(n.format(s.messages[c].max,e.fullField,e.max)):o&&l&&(ue.max)&&r.push(n.format(s.messages[c].range,e.fullField,e.min,e.max))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6));t.default=function(e,t,i,r,s){e.enum=Array.isArray(e.enum)?e.enum:[],-1===e.enum.indexOf(t)&&r.push(n.format(s.messages.enum,e.fullField,e.enum.join(", ")))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6));t.default=function(e,t,i,r,s){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||r.push(n.format(s.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||r.push(n.format(s.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),void 0!==t&&s.default.type(e,t,n,o,r)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(""===t&&(t=void 0),(0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),void 0!==t&&(s.default.type(e,t,n,o,r),s.default.range(e,t,n,o,r))}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(6),s=i(12),a=(n=s)&&n.__esModule?n:{default:n};t.default=function(e,t,i,n,s){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,r.isEmptyValue)(t)&&!e.required)return i();a.default.required(e,t,n,o,s),void 0!==t&&a.default.type(e,t,n,o,s)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),(0,a.isEmptyValue)(t)||s.default.type(e,t,n,o,r)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),void 0!==t&&(s.default.type(e,t,n,o,r),s.default.range(e,t,n,o,r))}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),void 0!==t&&(s.default.type(e,t,n,o,r),s.default.range(e,t,n,o,r))}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t,"array")&&!e.required)return i();s.default.required(e,t,n,o,r,"array"),(0,a.isEmptyValue)(t,"array")||(s.default.type(e,t,n,o,r),s.default.range(e,t,n,o,r))}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),void 0!==t&&s.default.type(e,t,n,o,r)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),t&&s.default.enum(e,t,n,o,r)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t,"string")&&!e.required)return i();s.default.required(e,t,n,o,r),(0,a.isEmptyValue)(t,"string")||s.default.pattern(e,t,n,o,r)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();if(s.default.required(e,t,n,o,r),!(0,a.isEmptyValue)(t)){var l=void 0;l="number"==typeof t?new Date(t):t,s.default.type(e,l,n,o,r),l&&s.default.range(e,l.getTime(),n,o,r)}}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=i(12),a=(n=s)&&n.__esModule?n:{default:n};t.default=function(e,t,i,n,s){var o=[],l=Array.isArray(t)?"array":void 0===t?"undefined":r(t);a.default.required(e,t,n,o,s,l),i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=e.type,l=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t,o)&&!e.required)return i();s.default.required(e,t,n,l,r,o),(0,a.isEmptyValue)(t,o)||s.default.type(e,t,n,l,r)}i(l)}},function(e,t,i){"use strict";function n(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.newMessages=n;t.messages=n()},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=104)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},10:function(e,t){e.exports=i(123)},104:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["el-input-number",e.inputNumberSize?"el-input-number--"+e.inputNumberSize:"",{"is-disabled":e.inputNumberDisabled},{"is-without-controls":!e.controls},{"is-controls-right":e.controlsAtRight}],on:{dragstart:function(e){e.preventDefault()}}},[e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-input-number__decrease",class:{"is-disabled":e.minDisabled},attrs:{role:"button"},on:{keydown:function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.decrease(t)}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-down":"minus")})]):e._e(),e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-input-number__increase",class:{"is-disabled":e.maxDisabled},attrs:{role:"button"},on:{keydown:function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.increase(t)}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-up":"plus")})]):e._e(),i("el-input",{ref:"input",attrs:{value:e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label},on:{blur:e.handleBlur,focus:e.handleFocus,input:e.handleInput,change:e.handleInputChange},nativeOn:{keydown:[function(t){return!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),e.increase(t))},function(t){return!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),e.decrease(t))}]}})],1)};n._withStripped=!0;var r=i(10),s=i.n(r),a=i(22),o=i.n(a),l=i(30),u={name:"ElInputNumber",mixins:[o()("input")],inject:{elForm:{default:""},elFormItem:{default:""}},directives:{repeatClick:l.a},components:{ElInput:s.a},props:{step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:1/0},min:{type:Number,default:-1/0},value:{},disabled:Boolean,size:String,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:""},name:String,label:String,placeholder:String,precision:{type:Number,validator:function(e){return e>=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,r=i(t);return void 0!==n?(r>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),r)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||!!(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},c=i(0),d=Object(c.a)(u,n,[],!1,null,null,null);d.options.__file="packages/input-number/src/input-number.vue";var h=d.exports;h.install=function(e){e.component(h.name,h)};t.default=h},2:function(e,t){e.exports=i(25)},22:function(e,t){e.exports=i(127)},30:function(e,t,i){"use strict";var n=i(2);t.a={bind:function(e,t,i){var r=null,s=void 0,a=function(){return i.context[t.expression].apply()},o=function(){Date.now()-s<100&&a(),clearInterval(r),r=null};Object(n.on)(e,"mousedown",(function(e){0===e.button&&(s=Date.now(),Object(n.once)(document,"mouseup",o),clearInterval(r),r=setInterval(a,100))}))}}}})},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=59)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},15:function(e,t){e.exports=i(126)},19:function(e,t){e.exports=i(201)},21:function(e,t){e.exports=i(90)},26:function(e,t){e.exports=i(202)},3:function(e,t){e.exports=i(19)},31:function(e,t){e.exports=i(128)},40:function(e,t){e.exports=i(129)},51:function(e,t){e.exports=i(205)},59:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-cascader-panel",this.border&&"is-bordered"],on:{keydown:this.handleKeyDown}},this._l(this.menus,(function(e,i){return t("cascader-menu",{key:i,ref:"menu",refInFor:!0,attrs:{index:i,nodes:e}})})),1)};n._withStripped=!0;var r=i(26),s=i.n(r),a=i(15),o=i.n(a),l=i(19),u=i.n(l),c=i(51),d=i.n(c),h=i(3),p=function(e){return e.stopPropagation()},f={inject:["panel"],components:{ElCheckbox:u.a,ElRadio:d.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some((function(t){return e.isInPath(t)}))},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,i=this.node,n=this.isDisabled,r=this.config,s=r.multiple;!r.checkStrictly&&n||i.loading||(r.lazy&&!i.loaded?t.lazyLoad(i,(function(){var t=e.isLeaf;if(t||e.handleExpand(),s){var n=!!t&&i.checked;e.handleMultiCheckChange(n)}})):t.handleExpand(i))},handleCheckChange:function(){var e=this.panel,t=this.value,i=this.node;e.handleCheckChange(t),e.handleExpand(i)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,i=this.isChecked,n=this.config,r=n.checkStrictly;return n.multiple?this.renderCheckbox(e):r?this.renderRadio(e):t&&i?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,i=this.isLeaf;return t.loading?this.renderLoadingIcon(e):i?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,i=this.config,n=this.isDisabled,r={on:{change:this.handleMultiCheckChange},nativeOn:{}};return i.checkStrictly&&(r.nativeOn.click=p),e("el-checkbox",s()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:n}},r]))},renderRadio:function(e){var t=this.checkedValue,i=this.value,n=this.isDisabled;return Object(h.isEqual)(i,t)&&(i=t),e("el-radio",{attrs:{value:t,label:i,disabled:n},on:{change:this.handleCheckChange},nativeOn:{click:p}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,i=this.node,n=t.renderLabelFn;return e("span",{class:"el-cascader-node__label"},[(n?n({node:i,data:i.data}):null)||i.label])}},render:function(e){var t=this,i=this.inActivePath,n=this.inCheckedPath,r=this.isChecked,a=this.isLeaf,o=this.isDisabled,l=this.config,u=this.nodeId,c=l.expandTrigger,d=l.checkStrictly,h=l.multiple,p=!d&&o,f={on:{}};return"click"===c?f.on.click=this.handleExpand:(f.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},f.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),!a||o||d||h||(f.on.click=this.handleCheckChange),e("li",s()([{attrs:{role:"menuitem",id:u,"aria-expanded":i,tabindex:p?null:-1},class:{"el-cascader-node":!0,"is-selectable":d,"in-active-path":i,"in-checked-path":n,"is-active":r,"is-disabled":p}},f]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},m=i(0),v=Object(m.a)(f,void 0,void 0,!1,null,null,null);v.options.__file="packages/cascader-panel/src/cascader-node.vue";var g=v.exports,_=i(6),b={name:"ElCascaderMenu",mixins:[i.n(_).a],inject:["panel"],components:{ElScrollbar:o.a,CascaderNode:g},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(h.generateId)()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,i=this.hoverTimer,n=this.$refs.hoverZone;if(t&&n)if(t.contains(e.target)){clearTimeout(i);var r=this.$el.getBoundingClientRect().left,s=e.clientX-r,a=this.$el,o=a.offsetWidth,l=a.offsetHeight,u=t.offsetTop,c=u+t.offsetHeight;n.innerHTML='\n \n \n '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var r=this.nodes.map((function(i,r){var a=i.hasChildren;return e("cascader-node",s()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+r,"aria-haspopup":a,"aria-owns":a?t:null}},n]))}));return[].concat(r,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",s()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},y=Object(m.a)(b,void 0,void 0,!1,null,null,null);y.options.__file="packages/cascader-panel/src/cascader-menu.vue";var x=y.exports,k=i(21),w=function(){function e(e,t){for(var i=0;i1?t-1:0),n=1;n1?n-1:0),s=1;s0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},w(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,r=i.checkStrictly;return e[n]||!r&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,r=this.config,s=r.lazy,a=r.leaf;if(s){var o=Object(k.isDef)(e[a])?e[a]:!!t&&!n.length;return this.hasChildren=!o,o}return!i}}]),e}();var O=function e(t,i){return t.reduce((function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t}),[])},D=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(h.coerceTruthyValueToArray)(e),this.nodes=e.map((function(e){return new S(e,t.config)})),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new S(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=Object(h.coerceTruthyValueToArray)(e)).forEach((function(e){return i.appendNode(e,t)}))},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:O(this.nodes,e)},e.prototype.getNodeByValue=function(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter((function(t){return Object(h.valueEquals)(t.path,e)||t.value===e}));return t&&t.length?t[0]:null},e}(),E=i(9),T=i.n(E),$=i(40),P=i.n($),j=i(31),M=i.n(j),I=Object.assign||function(e){for(var t=1;t0){var l=i.store.getNodeByValue(s);l.data[o]||i.lazyLoad(l,(function(){i.handleExpand(l)})),i.loadCount===i.checkedValue.length&&i.$parent.computePresentText()}}t&&t(n)}))},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map((function(e){return e.getValueByOption()}))},scrollIntoView:function(){this.$isServer||(this.$refs.menu||[]).forEach((function(e){var t=e.$el;if(t){var i=t.querySelector(".el-scrollbar__wrap"),n=t.querySelector(".el-cascader-node.is-active")||t.querySelector(".el-cascader-node.in-active-path");M()(i,n)}}))},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue;return this.multiple?this.getFlattedNodes(e).filter((function(e){return e.checked})):this.isEmptyValue(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,i=e.multiple,n=e.emitPath;i?(this.getCheckedNodes(t).filter((function(e){return!e.isDisabled})).forEach((function(e){return e.doCheck(!1)})),this.calculateMultiCheckedValue()):this.checkedValue=n?[]:null}}},B=Object(m.a)(R,n,[],!1,null,null,null);B.options.__file="packages/cascader-panel/src/cascader-panel.vue";var H=B.exports;H.install=function(e){e.component(H.name,H)};t.default=H},6:function(e,t){e.exports=i(121)},9:function(e,t){e.exports=i(89)}})},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=79)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},2:function(e,t){e.exports=i(25)},3:function(e,t){e.exports=i(19)},5:function(e,t){e.exports=i(88)},7:function(e,t){e.exports=i(0)},79:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("transition",{attrs:{name:e.transition},on:{"after-enter":e.handleAfterEnter,"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:!e.disabled&&e.showPopper,expression:"!disabled && showPopper"}],ref:"popper",staticClass:"el-popover el-popper",class:[e.popperClass,e.content&&"el-popover--plain"],style:{width:e.width+"px"},attrs:{role:"tooltip",id:e.tooltipId,"aria-hidden":e.disabled||!e.showPopper?"true":"false"}},[e.title?i("div",{staticClass:"el-popover__title",domProps:{textContent:e._s(e.title)}}):e._e(),e._t("default",[e._v(e._s(e.content))])],2)]),i("span",{ref:"wrapper",staticClass:"el-popover__reference-wrapper"},[e._t("reference")],2)],1)};n._withStripped=!0;var r=i(5),s=i.n(r),a=i(2),o=i(3),l={name:"ElPopover",mixins:[s.a],props:{trigger:{type:String,default:"click",validator:function(e){return["click","focus","hover","manual"].indexOf(e)>-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(o.generateId)()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),t&&(Object(a.addClass)(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),i.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(a.on)(t,"focusin",(function(){e.handleFocus();var i=t.__vue__;i&&"function"==typeof i.focus&&i.focus()})),Object(a.on)(i,"focusin",this.handleFocus),Object(a.on)(t,"focusout",this.handleBlur),Object(a.on)(i,"focusout",this.handleBlur)),Object(a.on)(t,"keydown",this.handleKeydown),Object(a.on)(t,"click",this.handleClick)),"click"===this.trigger?(Object(a.on)(t,"click",this.doToggle),Object(a.on)(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(a.on)(t,"mouseenter",this.handleMouseEnter),Object(a.on)(i,"mouseenter",this.handleMouseEnter),Object(a.on)(t,"mouseleave",this.handleMouseLeave),Object(a.on)(i,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(a.on)(t,"focusin",this.doShow),Object(a.on)(t,"focusout",this.doClose)):(Object(a.on)(t,"mousedown",this.doShow),Object(a.on)(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(a.addClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(a.removeClass)(this.referenceElm,"focusing")},handleBlur:function(){Object(a.removeClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout((function(){e.showPopper=!0}),this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout((function(){e.showPopper=!1}),this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&i&&!i.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(a.off)(e,"click",this.doToggle),Object(a.off)(e,"mouseup",this.doClose),Object(a.off)(e,"mousedown",this.doShow),Object(a.off)(e,"focusin",this.doShow),Object(a.off)(e,"focusout",this.doClose),Object(a.off)(e,"mousedown",this.doShow),Object(a.off)(e,"mouseup",this.doClose),Object(a.off)(e,"mouseleave",this.handleMouseLeave),Object(a.off)(e,"mouseenter",this.handleMouseEnter),Object(a.off)(document,"click",this.handleDocumentClick)}},u=i(0),c=Object(u.a)(l,n,[],!1,null,null,null);c.options.__file="packages/popover/src/main.vue";var d=c.exports,h=function(e,t,i){var n=t.expression?t.value:t.arg,r=i.context.$refs[n];r&&(Array.isArray(r)?r[0].$refs.reference=e:r.$refs.reference=e)},p={bind:function(e,t,i){h(e,t,i)},inserted:function(e,t,i){h(e,t,i)}},f=i(7);i.n(f).a.directive("popover",p),d.install=function(e){e.directive("popover",p),e.component(d.name,d)},d.directive=p;t.default=d}})},function(e,t,i){},function(e,t,i){},function(e,t,i){},function(e,t,i){"use strict";var n=i(7),r=i(3),s=i(100),a=i(13),o=i(10),l=i(34),u=i(234),c=i(68),d=i(142),h=i(2),p=i(27),f=i(45).f,m=i(26).f,v=i(11).f,g=i(223).trim,_=r.Number,b=_.prototype,y="Number"==l(p(b)),x=function(e){if(c(e))throw TypeError("Cannot convert a Symbol value to a number");var t,i,n,r,s,a,o,l,u=d(e,"number");if("string"==typeof u&&u.length>2)if(43===(t=(u=g(u)).charCodeAt(0))||45===t){if(88===(i=u.charCodeAt(2))||120===i)return NaN}else if(48===t){switch(u.charCodeAt(1)){case 66:case 98:n=2,r=49;break;case 79:case 111:n=8,r=55;break;default:return+u}for(a=(s=u.slice(2)).length,o=0;or)return NaN;return parseInt(s,n)}return+u};if(s("Number",!_(" 0o1")||!_("0b1")||_("+0x1"))){for(var k,w=function(e){var t=arguments.length<1?0:e,i=this;return i instanceof w&&(y?h((function(){b.valueOf.call(i)})):"Number"!=l(i))?u(new _(x(t)),i,w):x(t)},C=n?f(_):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),S=0;C.length>S;S++)o(_,k=C[S])&&!o(w,k)&&v(w,k,m(_,k));w.prototype=b,b.constructor=w,a(r,"Number",w)}},function(e,t,i){"use strict";i(206)},function(e,t,i){"use strict";var n=i(1),r=i(33).every;n({target:"Array",proto:!0,forced:!i(40)("every")},{every:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}})},function(e,t,i){var n=i(13),r=Date.prototype,s=r.toString,a=r.getTime;"Invalid Date"!=String(new Date(NaN))&&n(r,"toString",(function(){var e=a.call(this);return e==e?s.call(this):"Invalid Date"}))},function(e,t,i){},function(e,t,i){},function(e,t,i){"use strict";var n=i(31),r=i(8),s=[].slice,a={},o=function(e,t,i){if(!(t in a)){for(var n=[],r=0;r=0&&(t=e.slice(n),e=e.slice(0,n));var r=e.indexOf("?");return r>=0&&(i=e.slice(r+1),e=e.slice(0,r)),{path:e,query:i,hash:t}}(r.path||""),c=t&&t.path||"/",p=u.path?S(u.path,c,i||r.append):c,f=function(e,t,i){void 0===t&&(t={});var n,r=i||h;try{n=r(e||"")}catch(e){n={}}for(var s in t){var a=t[s];n[s]=Array.isArray(a)?a.map(d):d(a)}return n}(u.query,r.query,n&&n.options.parseQuery),m=r.hash||u.hash;return m&&"#"!==m.charAt(0)&&(m="#"+m),{_normalized:!0,path:p,query:f,hash:m}}var U,G=function(){},Y={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,i=this.$router,n=this.$route,r=i.resolve(this.to,n,this.append),a=r.location,o=r.route,l=r.href,u={},c=i.options.linkActiveClass,d=i.options.linkExactActiveClass,h=null==c?"router-link-active":c,p=null==d?"router-link-exact-active":d,v=null==this.activeClass?h:this.activeClass,g=null==this.exactActiveClass?p:this.exactActiveClass,_=o.redirectedFrom?m(null,q(o.redirectedFrom),null,i):o;u[g]=y(n,_,this.exactPath),u[v]=this.exact||this.exactPath?u[g]:function(e,t){return 0===e.path.replace(f,"/").indexOf(t.path.replace(f,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var i in t)if(!(i in e))return!1;return!0}(e.query,t.query)}(n,_);var b=u[g]?this.ariaCurrentValue:null,x=function(e){K(e)&&(t.replace?i.replace(a,G):i.push(a,G))},k={click:K};Array.isArray(this.event)?this.event.forEach((function(e){k[e]=x})):k[this.event]=x;var w={class:u},C=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:l,route:o,navigate:x,isActive:u[v],isExactActive:u[g]});if(C){if(1===C.length)return C[0];if(C.length>1||!C.length)return 0===C.length?e():e("span",{},C)}if("a"===this.tag)w.on=k,w.attrs={href:l,"aria-current":b};else{var S=function e(t){var i;if(t)for(var n=0;n-1&&(o.params[h]=i.params[h]);return o.path=W(c.path,o.params),l(c,o,a)}if(o.path){o.params={};for(var p=0;p=e.length?i():e[r]?t(e[r],(function(){n(r+1)})):n(r+1)};n(0)}var xe={redirected:2,aborted:4,cancelled:8,duplicated:16};function ke(e,t){return Ce(e,t,xe.redirected,'Redirected when going from "'+e.fullPath+'" to "'+function(e){if("string"==typeof e)return e;if("path"in e)return e.path;var t={};return Se.forEach((function(i){i in e&&(t[i]=e[i])})),JSON.stringify(t,null,2)}(t)+'" via a navigation guard.')}function we(e,t){return Ce(e,t,xe.cancelled,'Navigation cancelled from "'+e.fullPath+'" to "'+t.fullPath+'" with a new navigation.')}function Ce(e,t,i,n){var r=new Error(n);return r._isRouter=!0,r.from=e,r.to=t,r.type=i,r}var Se=["params","query","hash"];function Oe(e){return Object.prototype.toString.call(e).indexOf("Error")>-1}function De(e,t){return Oe(e)&&e._isRouter&&(null==t||e.type===t)}function Ee(e){return function(t,i,n){var r=!1,s=0,a=null;Te(e,(function(e,t,i,o){if("function"==typeof e&&void 0===e.cid){r=!0,s++;var l,u=je((function(t){var r;((r=t).__esModule||Pe&&"Module"===r[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:U.extend(t),i.components[o]=t,--s<=0&&n()})),c=je((function(e){var t="Failed to resolve async component "+o+": "+e;a||(a=Oe(e)?e:new Error(t),n(a))}));try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var d=l.component;d&&"function"==typeof d.then&&d.then(u,c)}}})),r||n()}}function Te(e,t){return $e(e.map((function(e){return Object.keys(e.components).map((function(i){return t(e.components[i],e.instances[i],e,i)}))})))}function $e(e){return Array.prototype.concat.apply([],e)}var Pe="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function je(e){var t=!1;return function(){for(var i=[],n=arguments.length;n--;)i[n]=arguments[n];if(!t)return t=!0,e.apply(this,i)}}var Me=function(e,t){this.router=e,this.base=function(e){if(!e)if(X){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=g,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Ie(e,t,i,n){var r=Te(e,(function(e,n,r,s){var a=function(e,t){"function"!=typeof e&&(e=U.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return i(e,n,r,s)})):i(a,n,r,s)}));return $e(n?r.reverse():r)}function Ae(e,t){if(t)return function(){return e.apply(t,arguments)}}Me.prototype.listen=function(e){this.cb=e},Me.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Me.prototype.onError=function(e){this.errorCbs.push(e)},Me.prototype.transitionTo=function(e,t,i){var n,r=this;try{n=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var s=this.current;this.confirmTransition(n,(function(){r.updateRoute(n),t&&t(n),r.ensureURL(),r.router.afterHooks.forEach((function(e){e&&e(n,s)})),r.ready||(r.ready=!0,r.readyCbs.forEach((function(e){e(n)})))}),(function(e){i&&i(e),e&&!r.ready&&(De(e,xe.redirected)&&s===g||(r.ready=!0,r.readyErrorCbs.forEach((function(t){t(e)}))))}))},Me.prototype.confirmTransition=function(e,t,i){var n=this,r=this.current;this.pending=e;var s,a,o=function(e){!De(e)&&Oe(e)&&(n.errorCbs.length?n.errorCbs.forEach((function(t){t(e)})):console.error(e)),i&&i(e)},l=e.matched.length-1,u=r.matched.length-1;if(y(e,r)&&l===u&&e.matched[l]===r.matched[u])return this.ensureURL(),o(((a=Ce(s=r,e,xe.duplicated,'Avoided redundant navigation to current location: "'+s.fullPath+'".')).name="NavigationDuplicated",a));var c=function(e,t){var i,n=Math.max(e.length,t.length);for(i=0;i0)){var t=this.router,i=t.options.scrollBehavior,n=ge&&i;n&&this.listeners.push(oe());var r=function(){var i=e.current,r=Le(e.base);e.current===g&&r===e._startLocation||e.transitionTo(r,(function(e){n&&le(t,e,i,!0)}))};window.addEventListener("popstate",r),this.listeners.push((function(){window.removeEventListener("popstate",r)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,i){var n=this,r=this.current;this.transitionTo(e,(function(e){_e(O(n.base+e.fullPath)),le(n.router,e,r,!1),t&&t(e)}),i)},t.prototype.replace=function(e,t,i){var n=this,r=this.current;this.transitionTo(e,(function(e){be(O(n.base+e.fullPath)),le(n.router,e,r,!1),t&&t(e)}),i)},t.prototype.ensureURL=function(e){if(Le(this.base)!==this.current.fullPath){var t=O(this.base+this.current.fullPath);e?_e(t):be(t)}},t.prototype.getCurrentLocation=function(){return Le(this.base)},t}(Me);function Le(e){var t=window.location.pathname,i=t.toLowerCase(),n=e.toLowerCase();return!e||i!==n&&0!==i.indexOf(O(n+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Fe=function(e){function t(t,i,n){e.call(this,t,i),n&&function(e){var t=Le(e);if(!/^\/#/.test(t))return window.location.replace(O(e+"/#"+t)),!0}(this.base)||Ve()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,i=ge&&t;i&&this.listeners.push(oe());var n=function(){var t=e.current;Ve()&&e.transitionTo(ze(),(function(n){i&&le(e.router,n,t,!0),ge||He(n.fullPath)}))},r=ge?"popstate":"hashchange";window.addEventListener(r,n),this.listeners.push((function(){window.removeEventListener(r,n)}))}},t.prototype.push=function(e,t,i){var n=this,r=this.current;this.transitionTo(e,(function(e){Be(e.fullPath),le(n.router,e,r,!1),t&&t(e)}),i)},t.prototype.replace=function(e,t,i){var n=this,r=this.current;this.transitionTo(e,(function(e){He(e.fullPath),le(n.router,e,r,!1),t&&t(e)}),i)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;ze()!==t&&(e?Be(t):He(t))},t.prototype.getCurrentLocation=function(){return ze()},t}(Me);function Ve(){var e=ze();return"/"===e.charAt(0)||(He("/"+e),!1)}function ze(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Re(e){var t=window.location.href,i=t.indexOf("#");return(i>=0?t.slice(0,i):t)+"#"+e}function Be(e){ge?_e(Re(e)):window.location.hash=e}function He(e){ge?be(Re(e)):window.location.replace(Re(e))}var We=function(e){function t(t,i){e.call(this,t,i),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,i){var n=this;this.transitionTo(e,(function(e){n.stack=n.stack.slice(0,n.index+1).concat(e),n.index++,t&&t(e)}),i)},t.prototype.replace=function(e,t,i){var n=this;this.transitionTo(e,(function(e){n.stack=n.stack.slice(0,n.index).concat(e),t&&t(e)}),i)},t.prototype.go=function(e){var t=this,i=this.index+e;if(!(i<0||i>=this.stack.length)){var n=this.stack[i];this.confirmTransition(n,(function(){var e=t.current;t.index=i,t.updateRoute(n),t.router.afterHooks.forEach((function(t){t&&t(n,e)}))}),(function(e){De(e,xe.duplicated)&&(t.index=i)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Me),qe=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=J(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!ge&&!1!==e.fallback,this.fallback&&(t="hash"),X||(t="abstract"),this.mode=t,t){case"history":this.history=new Ne(this,e.base);break;case"hash":this.history=new Fe(this,e.base,this.fallback);break;case"abstract":this.history=new We(this,e.base);break;default:0}},Ue={currentRoute:{configurable:!0}};function Ge(e,t){return e.push(t),function(){var i=e.indexOf(t);i>-1&&e.splice(i,1)}}qe.prototype.match=function(e,t,i){return this.matcher.match(e,t,i)},Ue.currentRoute.get=function(){return this.history&&this.history.current},qe.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var i=t.apps.indexOf(e);i>-1&&t.apps.splice(i,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var i=this.history;if(i instanceof Ne||i instanceof Fe){var n=function(e){i.setupListeners(),function(e){var n=i.current,r=t.options.scrollBehavior;ge&&r&&"fullPath"in e&&le(t,e,n,!1)}(e)};i.transitionTo(i.getCurrentLocation(),n,n)}i.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},qe.prototype.beforeEach=function(e){return Ge(this.beforeHooks,e)},qe.prototype.beforeResolve=function(e){return Ge(this.resolveHooks,e)},qe.prototype.afterEach=function(e){return Ge(this.afterHooks,e)},qe.prototype.onReady=function(e,t){this.history.onReady(e,t)},qe.prototype.onError=function(e){this.history.onError(e)},qe.prototype.push=function(e,t,i){var n=this;if(!t&&!i&&"undefined"!=typeof Promise)return new Promise((function(t,i){n.history.push(e,t,i)}));this.history.push(e,t,i)},qe.prototype.replace=function(e,t,i){var n=this;if(!t&&!i&&"undefined"!=typeof Promise)return new Promise((function(t,i){n.history.replace(e,t,i)}));this.history.replace(e,t,i)},qe.prototype.go=function(e){this.history.go(e)},qe.prototype.back=function(){this.go(-1)},qe.prototype.forward=function(){this.go(1)},qe.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},qe.prototype.resolve=function(e,t,i){var n=q(e,t=t||this.history.current,i,this),r=this.match(n,t),s=r.redirectedFrom||r.fullPath;return{location:n,route:r,href:function(e,t,i){var n="hash"===i?"#"+t:t;return e?O(e+"/"+n):n}(this.history.base,s,this.mode),normalizedTo:n,resolved:r}},qe.prototype.getRoutes=function(){return this.matcher.getRoutes()},qe.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},qe.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(qe.prototype,Ue),qe.install=function e(t){if(!e.installed||U!==t){e.installed=!0,U=t;var i=function(e){return void 0!==e},n=function(e,t){var n=e.$options._parentVnode;i(n)&&i(n=n.data)&&i(n=n.registerRouteInstance)&&n(e,t)};t.mixin({beforeCreate:function(){i(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,n(this,this)},destroyed:function(){n(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",w),t.component("RouterLink",Y);var r=t.config.optionMergeStrategies;r.beforeRouteEnter=r.beforeRouteLeave=r.beforeRouteUpdate=r.created}},qe.version="3.5.2",qe.isNavigationFailure=De,qe.NavigationFailureType=xe,qe.START_LOCATION=g,X&&window.Vue&&window.Vue.use(qe);var Ye=qe;i(166),i(167),i(255),i(98),i(222),i(59),i(96),i(257);function Ke(e){e.locales&&Object.keys(e.locales).forEach((function(t){e.locales[t].path=t})),Object.freeze(e)}i(42),i(52),i(82);var Xe=i(37),Ze=(i(174),i(56),i(95),i(229),i(230),{NotFound:function(){return i.e(13).then(i.bind(null,523))},Layout:function(){return Promise.all([i.e(0),i.e(1),i.e(3),i.e(6)]).then(i.bind(null,522))}}),Qe={"v-12ba3bb3":function(){return i.e(15).then(i.bind(null,530))},"v-39778893":function(){return i.e(16).then(i.bind(null,531))},"v-19f50016":function(){return i.e(21).then(i.bind(null,532))},"v-ae3fc19a":function(){return i.e(23).then(i.bind(null,533))},"v-68042ff3":function(){return i.e(24).then(i.bind(null,534))},"v-0670ce5a":function(){return i.e(25).then(i.bind(null,535))},"v-5a12e669":function(){return i.e(26).then(i.bind(null,536))},"v-3a742ac2":function(){return i.e(27).then(i.bind(null,537))},"v-2335d15a":function(){return i.e(28).then(i.bind(null,538))},"v-0cdcef91":function(){return i.e(29).then(i.bind(null,539))},"v-70e16acf":function(){return i.e(30).then(i.bind(null,540))},"v-fa79849a":function(){return i.e(31).then(i.bind(null,541))},"v-0401205a":function(){return i.e(32).then(i.bind(null,542))},"v-2c2d5cdb":function(){return i.e(33).then(i.bind(null,543))},"v-6779dcc1":function(){return i.e(34).then(i.bind(null,544))},"v-00fd3d65":function(){return i.e(35).then(i.bind(null,545))},"v-04ba1293":function(){return i.e(36).then(i.bind(null,546))},"v-82e6d25a":function(){return i.e(37).then(i.bind(null,547))},"v-673913da":function(){return i.e(38).then(i.bind(null,548))},"v-5efa98ed":function(){return i.e(39).then(i.bind(null,549))},"v-6e3f1e13":function(){return i.e(40).then(i.bind(null,550))},"v-33e095f3":function(){return i.e(41).then(i.bind(null,551))},"v-66d83c29":function(){return i.e(42).then(i.bind(null,552))},"v-21ecd622":function(){return i.e(43).then(i.bind(null,553))},"v-dd2f48da":function(){return i.e(44).then(i.bind(null,554))},"v-0a8dba53":function(){return i.e(45).then(i.bind(null,555))},"v-733fd353":function(){return i.e(46).then(i.bind(null,556))},"v-531b3b1a":function(){return i.e(47).then(i.bind(null,557))},"v-11d701b0":function(){return i.e(22).then(i.bind(null,558))},"v-8e6f27ae":function(){return i.e(48).then(i.bind(null,559))},"v-37c7ba37":function(){return i.e(49).then(i.bind(null,560))},"v-62315253":function(){return i.e(50).then(i.bind(null,561))},"v-6c781c1a":function(){return i.e(51).then(i.bind(null,562))},"v-58cd4fb3":function(){return i.e(52).then(i.bind(null,563))},"v-3a8b6533":function(){return i.e(53).then(i.bind(null,564))},"v-47205bd3":function(){return i.e(54).then(i.bind(null,565))},"v-e776b66a":function(){return i.e(55).then(i.bind(null,566))},"v-109f79da":function(){return i.e(56).then(i.bind(null,567))},"v-d1885d0a":function(){return i.e(57).then(i.bind(null,568))},"v-53edfe1a":function(){return i.e(58).then(i.bind(null,569))},"v-1091e99e":function(){return i.e(59).then(i.bind(null,570))},"v-1f1ab335":function(){return i.e(60).then(i.bind(null,571))},"v-2a31a573":function(){return i.e(61).then(i.bind(null,572))},"v-915cd0da":function(){return i.e(62).then(i.bind(null,573))},"v-4d91676a":function(){return i.e(63).then(i.bind(null,574))},"v-2d0f5d02":function(){return i.e(64).then(i.bind(null,575))},"v-0dc527bf":function(){return i.e(65).then(i.bind(null,576))},"v-3cd4af93":function(){return i.e(66).then(i.bind(null,577))},"v-dd48008e":function(){return i.e(67).then(i.bind(null,578))},"v-3bab3327":function(){return i.e(68).then(i.bind(null,579))},"v-2646021f":function(){return i.e(69).then(i.bind(null,580))},"v-41e4a721":function(){return i.e(70).then(i.bind(null,581))},"v-00834891":function(){return i.e(71).then(i.bind(null,582))},"v-4f51c953":function(){return i.e(20).then(i.bind(null,583))},"v-58f572e4":function(){return i.e(19).then(i.bind(null,584))},"v-6a252d45":function(){return i.e(18).then(i.bind(null,585))},"v-56bc7428":function(){return i.e(17).then(i.bind(null,586))},"v-6c53f528":function(){return i.e(14).then(i.bind(null,587))},"v-470b6766":function(){return i.e(72).then(i.bind(null,588))},"v-ba66cabe":function(){return i.e(73).then(i.bind(null,589))},"v-26272be9":function(){return i.e(74).then(i.bind(null,590))},"v-10b7977f":function(){return i.e(75).then(i.bind(null,591))},"v-3a24bda3":function(){return i.e(76).then(i.bind(null,592))},"v-bb252ada":function(){return i.e(77).then(i.bind(null,593))},"v-12d02db9":function(){return i.e(78).then(i.bind(null,594))},"v-d193ea9a":function(){return i.e(79).then(i.bind(null,595))},"v-056fc51a":function(){return i.e(80).then(i.bind(null,596))},"v-3eaf113e":function(){return i.e(81).then(i.bind(null,597))},"v-430e4d1d":function(){return i.e(82).then(i.bind(null,598))},"v-2ba71c73":function(){return i.e(83).then(i.bind(null,599))},"v-63be8269":function(){return i.e(84).then(i.bind(null,600))},"v-5893f913":function(){return i.e(85).then(i.bind(null,601))},"v-39cfce57":function(){return i.e(86).then(i.bind(null,602))},"v-5676163e":function(){return i.e(87).then(i.bind(null,603))},"v-0d497ba1":function(){return i.e(88).then(i.bind(null,604))},"v-61357bbe":function(){return i.e(89).then(i.bind(null,605))},"v-60c8a861":function(){return i.e(90).then(i.bind(null,606))},"v-62b61eb1":function(){return i.e(91).then(i.bind(null,607))},"v-ee6c62be":function(){return i.e(92).then(i.bind(null,608))},"v-551c7ba1":function(){return i.e(93).then(i.bind(null,609))},"v-1ecbc9e1":function(){return i.e(94).then(i.bind(null,610))},"v-547c3061":function(){return i.e(95).then(i.bind(null,611))},"v-49c45526":function(){return i.e(96).then(i.bind(null,612))},"v-63e1089d":function(){return i.e(97).then(i.bind(null,613))},"v-7c9fc59a":function(){return i.e(98).then(i.bind(null,614))},"v-186917a6":function(){return i.e(99).then(i.bind(null,615))},"v-539b4fc1":function(){return i.e(100).then(i.bind(null,616))},"v-c6507cce":function(){return i.e(101).then(i.bind(null,617))},"v-3f086ebe":function(){return i.e(102).then(i.bind(null,618))},"v-2393ae36":function(){return i.e(103).then(i.bind(null,619))},"v-941099be":function(){return i.e(104).then(i.bind(null,620))},"v-63121a73":function(){return i.e(105).then(i.bind(null,621))},"v-1bca3f13":function(){return i.e(106).then(i.bind(null,622))},"v-681a3333":function(){return i.e(107).then(i.bind(null,623))}};function Je(e){var t=Object.create(null);return function(i){return t[i]||(t[i]=e(i))}}var et=/-(\w)/g,tt=Je((function(e){return e.replace(et,(function(e,t){return t?t.toUpperCase():""}))})),it=/\B([A-Z])/g,nt=Je((function(e){return e.replace(it,"-$1").toLowerCase()})),rt=Je((function(e){return e.charAt(0).toUpperCase()+e.slice(1)}));function st(e,t){if(t)return e(t)?e(t):t.includes("-")?e(rt(tt(t))):e(rt(t))||e(nt(t))}var at=Object.assign({},Ze,Qe),ot=function(e){return at[e]},lt=function(e){return Qe[e]},ut=function(e){return Ze[e]},ct=function(e){return r.default.component(e)};function dt(e){return st(lt,e)}function ht(e){return st(ut,e)}function pt(e){return st(ot,e)}function ft(e){return st(ct,e)}function mt(){for(var e=arguments.length,t=new Array(e),i=0;i"})).join("\n "):"",this.$ssrContext.canonicalLink=wt(this.$canonicalUrl)}var t},mounted:function(){this.currentMetaTags=Object(Xe.a)(document.querySelectorAll("meta")),this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var e=this.getMergedMetaTags();this.currentMetaTags=Ct(e,this.currentMetaTags)},getMergedMetaTags:function(){var e=this.$page.frontmatter.meta||[];return yt()([{name:"description",content:this.$description}],e,this.siteMeta,St)},updateCanonicalLink:function(){kt(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",wt(this.$canonicalUrl))}},watch:{$page:function(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy:function(){Ct(null,this.currentMetaTags),kt()}};function kt(){var e=document.querySelector("link[rel='canonical']");e&&e.remove()}function wt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e?''):""}function Ct(e,t){if(t&&Object(Xe.a)(t).filter((function(e){return e.parentNode===document.head})).forEach((function(e){return document.head.removeChild(e)})),e)return e.map((function(e){var t=document.createElement("meta");return Object.keys(e).forEach((function(i){t.setAttribute(i,e[i])})),document.head.appendChild(t),t}))}function St(e){for(var t=0,i=["name","property","itemprop"];t=o.parentElement.offsetTop+10&&(!l||n-1&&t.splice(i,1)}}function Kt(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var i=e.state;Zt(e,i,[],e._modules.root,!0),Xt(e,i,t)}function Xt(e,t,i){var n=e._vm;e.getters={},e._makeLocalGettersCache=Object.create(null);var r=e._wrappedGetters,s={};zt(r,(function(t,i){s[i]=function(e,t){return function(){return e(t)}}(t,e),Object.defineProperty(e.getters,i,{get:function(){return e._vm[i]},enumerable:!0})}));var a=qt.config.silent;qt.config.silent=!0,e._vm=new qt({data:{$$state:t},computed:s}),qt.config.silent=a,e.strict&&function(e){e._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}(e),n&&(i&&e._withCommit((function(){n._data.$$state=null})),qt.nextTick((function(){return n.$destroy()})))}function Zt(e,t,i,n,r){var s=!i.length,a=e._modules.getNamespace(i);if(n.namespaced&&(e._modulesNamespaceMap[a],e._modulesNamespaceMap[a]=n),!s&&!r){var o=Qt(t,i.slice(0,-1)),l=i[i.length-1];e._withCommit((function(){qt.set(o,l,n.state)}))}var u=n.context=function(e,t,i){var n=""===t,r={dispatch:n?e.dispatch:function(i,n,r){var s=Jt(i,n,r),a=s.payload,o=s.options,l=s.type;return o&&o.root||(l=t+l),e.dispatch(l,a)},commit:n?e.commit:function(i,n,r){var s=Jt(i,n,r),a=s.payload,o=s.options,l=s.type;o&&o.root||(l=t+l),e.commit(l,a,o)}};return Object.defineProperties(r,{getters:{get:n?function(){return e.getters}:function(){return function(e,t){if(!e._makeLocalGettersCache[t]){var i={},n=t.length;Object.keys(e.getters).forEach((function(r){if(r.slice(0,n)===t){var s=r.slice(n);Object.defineProperty(i,s,{get:function(){return e.getters[r]},enumerable:!0})}})),e._makeLocalGettersCache[t]=i}return e._makeLocalGettersCache[t]}(e,t)}},state:{get:function(){return Qt(e.state,i)}}}),r}(e,a,i);n.forEachMutation((function(t,i){!function(e,t,i,n){(e._mutations[t]||(e._mutations[t]=[])).push((function(t){i.call(e,n.state,t)}))}(e,a+i,t,u)})),n.forEachAction((function(t,i){var n=t.root?i:a+i,r=t.handler||t;!function(e,t,i,n){(e._actions[t]||(e._actions[t]=[])).push((function(t){var r,s=i.call(e,{dispatch:n.dispatch,commit:n.commit,getters:n.getters,state:n.state,rootGetters:e.getters,rootState:e.state},t);return(r=s)&&"function"==typeof r.then||(s=Promise.resolve(s)),e._devtoolHook?s.catch((function(t){throw e._devtoolHook.emit("vuex:error",t),t})):s}))}(e,n,r,u)})),n.forEachGetter((function(t,i){!function(e,t,i,n){if(e._wrappedGetters[t])return void 0;e._wrappedGetters[t]=function(e){return i(n.state,n.getters,e.state,e.getters)}}(e,a+i,t,u)})),n.forEachChild((function(n,s){Zt(e,t,i.concat(s),n,r)}))}function Qt(e,t){return t.reduce((function(e,t){return e[t]}),e)}function Jt(e,t,i){return Rt(e)&&e.type&&(i=t,t=e,e=e.type),{type:e,payload:t,options:i}}function ei(e){qt&&e===qt|| + */,e.exports=function(e,t){if(!r.canUseDOM||t&&!("addEventListener"in document))return!1;var i="on"+e,s=i in document;if(!s){var a=document.createElement("div");a.setAttribute(i,"return;"),s="function"==typeof a[i]}return!s&&n&&"wheel"===e&&(s=document.implementation.hasFeature("Events.wheel","3.0")),s}},function(e,t,i){"use strict";var n=!("undefined"==typeof window||!window.document||!window.document.createElement),r={canUseDOM:n,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:n&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:n&&!!window.screen,isInWorker:!n};e.exports=r},function(e,t,i){"use strict";t.__esModule=!0;var n,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=i(129),a=(n=s)&&n.__esModule?n:{default:n};var o,l=l||{};l.Dialog=function(e,t,i){var n=this;if(this.dialogNode=e,null===this.dialogNode||"dialog"!==this.dialogNode.getAttribute("role"))throw new Error("Dialog() requires a DOM element with ARIA role of dialog.");"string"==typeof t?this.focusAfterClosed=document.getElementById(t):"object"===(void 0===t?"undefined":r(t))?this.focusAfterClosed=t:this.focusAfterClosed=null,"string"==typeof i?this.focusFirst=document.getElementById(i):"object"===(void 0===i?"undefined":r(i))?this.focusFirst=i:this.focusFirst=null,this.focusFirst?this.focusFirst.focus():a.default.focusFirstDescendant(this.dialogNode),this.lastFocus=document.activeElement,o=function(e){n.trapFocus(e)},this.addListeners()},l.Dialog.prototype.addListeners=function(){document.addEventListener("focus",o,!0)},l.Dialog.prototype.removeListeners=function(){document.removeEventListener("focus",o,!0)},l.Dialog.prototype.closeDialog=function(){var e=this;this.removeListeners(),this.focusAfterClosed&&setTimeout((function(){e.focusAfterClosed.focus()}))},l.Dialog.prototype.trapFocus=function(e){a.default.IgnoreUtilFocusChanges||(this.dialogNode.contains(e.target)?this.lastFocus=e.target:(a.default.focusFirstDescendant(this.dialogNode),this.lastFocus===document.activeElement&&a.default.focusLastDescendant(this.dialogNode),this.lastFocus=document.activeElement))},t.default=l.Dialog},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=e,l=i,d=n;if("function"==typeof l&&(d=l,l={}),!this.rules||0===Object.keys(this.rules).length)return d&&d(),Promise.resolve();function h(e){var t,i,n=void 0,r=[],s={};for(n=0;n0&&void 0!==arguments[0]?arguments[0]:[],u=s;if(Array.isArray(u)||(u=[u]),!l.suppressWarning&&u.length&&c.warning("async-validator:",u),u.length&&i.message&&(u=[].concat(i.message)),u=u.map((0,a.complementError)(i)),l.first&&u.length)return _[i.field]=1,t(u);if(n){if(i.required&&!e.value)return u=i.message?[].concat(i.message).map((0,a.complementError)(i)):l.error?[l.error(i,(0,a.format)(l.messages.required,i.field))]:[],t(u);var d={};if(i.defaultField)for(var h in e.value)e.value.hasOwnProperty(h)&&(d[h]=i.defaultField);for(var p in d=r({},d,e.rule.fields))if(d.hasOwnProperty(p)){var f=Array.isArray(d[p])?d[p]:[d[p]];d[p]=f.map(o.bind(null,p))}var m=new c(d);m.messages(l.messages),e.rule.options&&(e.rule.options.messages=l.messages,e.rule.options.error=l.error),m.validate(e.value,e.rule.options||l,(function(e){var i=[];u&&u.length&&i.push.apply(i,u),e&&e.length&&i.push.apply(i,e),t(i.length?i:null)}))}else t(u)}n=n&&(i.required||!i.required&&e.value),i.field=e.field;var d=void 0;i.asyncValidator?d=i.asyncValidator(i,e.value,u,e.source,l):i.validator&&(!0===(d=i.validator(i,e.value,u,e.source,l))?u():!1===d?u(i.message||i.field+" fails"):d instanceof Array?u(d):d instanceof Error&&u(d.message)),d&&d.then&&d.then((function(){return u()}),(function(e){return u(e)}))}),(function(e){h(e)}))},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!l.default.hasOwnProperty(e.type))throw new Error((0,a.format)("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;var t=Object.keys(e),i=t.indexOf("message");return-1!==i&&t.splice(i,1),1===t.length&&"required"===t[0]?l.default.required:l.default[this.getType(e)]||!1}},c.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");l.default[e]=t},c.warning=a.warning,c.messages=u.messages,t.default=c},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=g(i(386)),r=g(i(392)),s=g(i(393)),a=g(i(394)),o=g(i(395)),l=g(i(396)),u=g(i(397)),c=g(i(398)),d=g(i(399)),h=g(i(400)),p=g(i(401)),f=g(i(402)),m=g(i(403)),v=g(i(404));function g(e){return e&&e.__esModule?e:{default:e}}t.default={string:n.default,method:r.default,number:s.default,boolean:a.default,regexp:o.default,integer:l.default,float:u.default,array:c.default,object:d.default,enum:h.default,pattern:p.default,date:f.default,url:v.default,hex:v.default,email:v.default,required:m.default}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t,"string")&&!e.required)return i();s.default.required(e,t,n,o,r,"string"),(0,a.isEmptyValue)(t,"string")||(s.default.type(e,t,n,o,r),s.default.range(e,t,n,o,r),s.default.pattern(e,t,n,o,r),!0===e.whitespace&&s.default.whitespace(e,t,n,o,r))}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6));t.default=function(e,t,i,r,s){(/^\s+$/.test(t)||""===t)&&r.push(n.format(s.messages.whitespace,e.fullField))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6)),a=i(204),o=(n=a)&&n.__esModule?n:{default:n};var l={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},u={integer:function(e){return u.number(e)&&parseInt(e,10)===e},float:function(e){return u.number(e)&&!u.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"===(void 0===e?"undefined":r(e))&&!u.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(l.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(l.url)},hex:function(e){return"string"==typeof e&&!!e.match(l.hex)}};t.default=function(e,t,i,n,a){if(e.required&&void 0===t)(0,o.default)(e,t,i,n,a);else{var l=e.type;["integer","float","array","regexp","object","method","email","number","date","url","hex"].indexOf(l)>-1?u[l](t)||n.push(s.format(a.messages.types[l],e.fullField,e.type)):l&&(void 0===t?"undefined":r(t))!==e.type&&n.push(s.format(a.messages.types[l],e.fullField,e.type))}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6));t.default=function(e,t,i,r,s){var a="number"==typeof e.len,o="number"==typeof e.min,l="number"==typeof e.max,u=t,c=null,d="number"==typeof t,h="string"==typeof t,p=Array.isArray(t);if(d?c="number":h?c="string":p&&(c="array"),!c)return!1;p&&(u=t.length),h&&(u=t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length),a?u!==e.len&&r.push(n.format(s.messages[c].len,e.fullField,e.len)):o&&!l&&ue.max?r.push(n.format(s.messages[c].max,e.fullField,e.max)):o&&l&&(ue.max)&&r.push(n.format(s.messages[c].range,e.fullField,e.min,e.max))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6));t.default=function(e,t,i,r,s){e.enum=Array.isArray(e.enum)?e.enum:[],-1===e.enum.indexOf(t)&&r.push(n.format(s.messages.enum,e.fullField,e.enum.join(", ")))}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t.default=e,t}(i(6));t.default=function(e,t,i,r,s){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||r.push(n.format(s.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){new RegExp(e.pattern).test(t)||r.push(n.format(s.messages.pattern.mismatch,e.fullField,t,e.pattern))}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),void 0!==t&&s.default.type(e,t,n,o,r)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if(""===t&&(t=void 0),(0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),void 0!==t&&(s.default.type(e,t,n,o,r),s.default.range(e,t,n,o,r))}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(6),s=i(12),a=(n=s)&&n.__esModule?n:{default:n};t.default=function(e,t,i,n,s){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,r.isEmptyValue)(t)&&!e.required)return i();a.default.required(e,t,n,o,s),void 0!==t&&a.default.type(e,t,n,o,s)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),(0,a.isEmptyValue)(t)||s.default.type(e,t,n,o,r)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),void 0!==t&&(s.default.type(e,t,n,o,r),s.default.range(e,t,n,o,r))}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),void 0!==t&&(s.default.type(e,t,n,o,r),s.default.range(e,t,n,o,r))}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t,"array")&&!e.required)return i();s.default.required(e,t,n,o,r,"array"),(0,a.isEmptyValue)(t,"array")||(s.default.type(e,t,n,o,r),s.default.range(e,t,n,o,r))}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),void 0!==t&&s.default.type(e,t,n,o,r)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();s.default.required(e,t,n,o,r),t&&s.default.enum(e,t,n,o,r)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t,"string")&&!e.required)return i();s.default.required(e,t,n,o,r),(0,a.isEmptyValue)(t,"string")||s.default.pattern(e,t,n,o,r)}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t)&&!e.required)return i();if(s.default.required(e,t,n,o,r),!(0,a.isEmptyValue)(t)){var l=void 0;l="number"==typeof t?new Date(t):t,s.default.type(e,l,n,o,r),l&&s.default.range(e,l.getTime(),n,o,r)}}i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=i(12),a=(n=s)&&n.__esModule?n:{default:n};t.default=function(e,t,i,n,s){var o=[],l=Array.isArray(t)?"array":void 0===t?"undefined":r(t);a.default.required(e,t,n,o,s,l),i(o)}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,r=i(12),s=(n=r)&&n.__esModule?n:{default:n},a=i(6);t.default=function(e,t,i,n,r){var o=e.type,l=[];if(e.required||!e.required&&n.hasOwnProperty(e.field)){if((0,a.isEmptyValue)(t,o)&&!e.required)return i();s.default.required(e,t,n,l,r,o),(0,a.isEmptyValue)(t,o)||s.default.type(e,t,n,l,r)}i(l)}},function(e,t,i){"use strict";function n(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.newMessages=n;t.messages=n()},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=104)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},10:function(e,t){e.exports=i(123)},104:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["el-input-number",e.inputNumberSize?"el-input-number--"+e.inputNumberSize:"",{"is-disabled":e.inputNumberDisabled},{"is-without-controls":!e.controls},{"is-controls-right":e.controlsAtRight}],on:{dragstart:function(e){e.preventDefault()}}},[e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-input-number__decrease",class:{"is-disabled":e.minDisabled},attrs:{role:"button"},on:{keydown:function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.decrease(t)}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-down":"minus")})]):e._e(),e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-input-number__increase",class:{"is-disabled":e.maxDisabled},attrs:{role:"button"},on:{keydown:function(t){return!("button"in t)&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.increase(t)}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-up":"plus")})]):e._e(),i("el-input",{ref:"input",attrs:{value:e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label},on:{blur:e.handleBlur,focus:e.handleFocus,input:e.handleInput,change:e.handleInputChange},nativeOn:{keydown:[function(t){return!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),e.increase(t))},function(t){return!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),e.decrease(t))}]}})],1)};n._withStripped=!0;var r=i(10),s=i.n(r),a=i(22),o=i.n(a),l=i(30),u={name:"ElInputNumber",mixins:[o()("input")],inject:{elForm:{default:""},elFormItem:{default:""}},directives:{repeatClick:l.a},components:{ElInput:s.a},props:{step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:1/0},min:{type:Number,default:-1/0},value:{},disabled:Boolean,size:String,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:""},name:String,label:String,placeholder:String,precision:{type:Number,validator:function(e){return e>=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,r=i(t);return void 0!==n?(r>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),r)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||!!(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},c=i(0),d=Object(c.a)(u,n,[],!1,null,null,null);d.options.__file="packages/input-number/src/input-number.vue";var h=d.exports;h.install=function(e){e.component(h.name,h)};t.default=h},2:function(e,t){e.exports=i(25)},22:function(e,t){e.exports=i(127)},30:function(e,t,i){"use strict";var n=i(2);t.a={bind:function(e,t,i){var r=null,s=void 0,a=function(){return i.context[t.expression].apply()},o=function(){Date.now()-s<100&&a(),clearInterval(r),r=null};Object(n.on)(e,"mousedown",(function(e){0===e.button&&(s=Date.now(),Object(n.once)(document,"mouseup",o),clearInterval(r),r=setInterval(a,100))}))}}}})},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=59)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},15:function(e,t){e.exports=i(126)},19:function(e,t){e.exports=i(201)},21:function(e,t){e.exports=i(90)},26:function(e,t){e.exports=i(202)},3:function(e,t){e.exports=i(19)},31:function(e,t){e.exports=i(128)},40:function(e,t){e.exports=i(129)},51:function(e,t){e.exports=i(205)},59:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-cascader-panel",this.border&&"is-bordered"],on:{keydown:this.handleKeyDown}},this._l(this.menus,(function(e,i){return t("cascader-menu",{key:i,ref:"menu",refInFor:!0,attrs:{index:i,nodes:e}})})),1)};n._withStripped=!0;var r=i(26),s=i.n(r),a=i(15),o=i.n(a),l=i(19),u=i.n(l),c=i(51),d=i.n(c),h=i(3),p=function(e){return e.stopPropagation()},f={inject:["panel"],components:{ElCheckbox:u.a,ElRadio:d.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some((function(t){return e.isInPath(t)}))},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,i=this.node,n=this.isDisabled,r=this.config,s=r.multiple;!r.checkStrictly&&n||i.loading||(r.lazy&&!i.loaded?t.lazyLoad(i,(function(){var t=e.isLeaf;if(t||e.handleExpand(),s){var n=!!t&&i.checked;e.handleMultiCheckChange(n)}})):t.handleExpand(i))},handleCheckChange:function(){var e=this.panel,t=this.value,i=this.node;e.handleCheckChange(t),e.handleExpand(i)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,i=this.isChecked,n=this.config,r=n.checkStrictly;return n.multiple?this.renderCheckbox(e):r?this.renderRadio(e):t&&i?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,i=this.isLeaf;return t.loading?this.renderLoadingIcon(e):i?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,i=this.config,n=this.isDisabled,r={on:{change:this.handleMultiCheckChange},nativeOn:{}};return i.checkStrictly&&(r.nativeOn.click=p),e("el-checkbox",s()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:n}},r]))},renderRadio:function(e){var t=this.checkedValue,i=this.value,n=this.isDisabled;return Object(h.isEqual)(i,t)&&(i=t),e("el-radio",{attrs:{value:t,label:i,disabled:n},on:{change:this.handleCheckChange},nativeOn:{click:p}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,i=this.node,n=t.renderLabelFn;return e("span",{class:"el-cascader-node__label"},[(n?n({node:i,data:i.data}):null)||i.label])}},render:function(e){var t=this,i=this.inActivePath,n=this.inCheckedPath,r=this.isChecked,a=this.isLeaf,o=this.isDisabled,l=this.config,u=this.nodeId,c=l.expandTrigger,d=l.checkStrictly,h=l.multiple,p=!d&&o,f={on:{}};return"click"===c?f.on.click=this.handleExpand:(f.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},f.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),!a||o||d||h||(f.on.click=this.handleCheckChange),e("li",s()([{attrs:{role:"menuitem",id:u,"aria-expanded":i,tabindex:p?null:-1},class:{"el-cascader-node":!0,"is-selectable":d,"in-active-path":i,"in-checked-path":n,"is-active":r,"is-disabled":p}},f]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},m=i(0),v=Object(m.a)(f,void 0,void 0,!1,null,null,null);v.options.__file="packages/cascader-panel/src/cascader-node.vue";var g=v.exports,_=i(6),b={name:"ElCascaderMenu",mixins:[i.n(_).a],inject:["panel"],components:{ElScrollbar:o.a,CascaderNode:g},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(h.generateId)()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,i=this.hoverTimer,n=this.$refs.hoverZone;if(t&&n)if(t.contains(e.target)){clearTimeout(i);var r=this.$el.getBoundingClientRect().left,s=e.clientX-r,a=this.$el,o=a.offsetWidth,l=a.offsetHeight,u=t.offsetTop,c=u+t.offsetHeight;n.innerHTML='\n \n \n '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var r=this.nodes.map((function(i,r){var a=i.hasChildren;return e("cascader-node",s()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+r,"aria-haspopup":a,"aria-owns":a?t:null}},n]))}));return[].concat(r,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",s()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},y=Object(m.a)(b,void 0,void 0,!1,null,null,null);y.options.__file="packages/cascader-panel/src/cascader-menu.vue";var x=y.exports,k=i(21),w=function(){function e(e,t){for(var i=0;i1?t-1:0),n=1;n1?n-1:0),s=1;s0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},w(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,r=i.checkStrictly;return e[n]||!r&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,r=this.config,s=r.lazy,a=r.leaf;if(s){var o=Object(k.isDef)(e[a])?e[a]:!!t&&!n.length;return this.hasChildren=!o,o}return!i}}]),e}();var O=function e(t,i){return t.reduce((function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t}),[])},D=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(h.coerceTruthyValueToArray)(e),this.nodes=e.map((function(e){return new S(e,t.config)})),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new S(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=Object(h.coerceTruthyValueToArray)(e)).forEach((function(e){return i.appendNode(e,t)}))},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:O(this.nodes,e)},e.prototype.getNodeByValue=function(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter((function(t){return Object(h.valueEquals)(t.path,e)||t.value===e}));return t&&t.length?t[0]:null},e}(),E=i(9),T=i.n(E),$=i(40),P=i.n($),j=i(31),M=i.n(j),I=Object.assign||function(e){for(var t=1;t0){var l=i.store.getNodeByValue(s);l.data[o]||i.lazyLoad(l,(function(){i.handleExpand(l)})),i.loadCount===i.checkedValue.length&&i.$parent.computePresentText()}}t&&t(n)}))},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map((function(e){return e.getValueByOption()}))},scrollIntoView:function(){this.$isServer||(this.$refs.menu||[]).forEach((function(e){var t=e.$el;if(t){var i=t.querySelector(".el-scrollbar__wrap"),n=t.querySelector(".el-cascader-node.is-active")||t.querySelector(".el-cascader-node.in-active-path");M()(i,n)}}))},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue;return this.multiple?this.getFlattedNodes(e).filter((function(e){return e.checked})):this.isEmptyValue(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,i=e.multiple,n=e.emitPath;i?(this.getCheckedNodes(t).filter((function(e){return!e.isDisabled})).forEach((function(e){return e.doCheck(!1)})),this.calculateMultiCheckedValue()):this.checkedValue=n?[]:null}}},B=Object(m.a)(R,n,[],!1,null,null,null);B.options.__file="packages/cascader-panel/src/cascader-panel.vue";var H=B.exports;H.install=function(e){e.component(H.name,H)};t.default=H},6:function(e,t){e.exports=i(121)},9:function(e,t){e.exports=i(89)}})},function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=79)}({0:function(e,t,i){"use strict";function n(e,t,i,n,r,s,a,o){var l,u="function"==typeof e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=i,u._compiled=!0),n&&(u.functional=!0),s&&(u._scopeId="data-v-"+s),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},u._ssrRegister=l):r&&(l=o?function(){r.call(this,this.$root.$options.shadowRoot)}:r),l)if(u.functional){u._injectStyles=l;var c=u.render;u.render=function(e,t){return l.call(t),c(e,t)}}else{var d=u.beforeCreate;u.beforeCreate=d?[].concat(d,l):[l]}return{exports:e,options:u}}i.d(t,"a",(function(){return n}))},2:function(e,t){e.exports=i(25)},3:function(e,t){e.exports=i(19)},5:function(e,t){e.exports=i(88)},7:function(e,t){e.exports=i(0)},79:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("transition",{attrs:{name:e.transition},on:{"after-enter":e.handleAfterEnter,"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:!e.disabled&&e.showPopper,expression:"!disabled && showPopper"}],ref:"popper",staticClass:"el-popover el-popper",class:[e.popperClass,e.content&&"el-popover--plain"],style:{width:e.width+"px"},attrs:{role:"tooltip",id:e.tooltipId,"aria-hidden":e.disabled||!e.showPopper?"true":"false"}},[e.title?i("div",{staticClass:"el-popover__title",domProps:{textContent:e._s(e.title)}}):e._e(),e._t("default",[e._v(e._s(e.content))])],2)]),i("span",{ref:"wrapper",staticClass:"el-popover__reference-wrapper"},[e._t("reference")],2)],1)};n._withStripped=!0;var r=i(5),s=i.n(r),a=i(2),o=i(3),l={name:"ElPopover",mixins:[s.a],props:{trigger:{type:String,default:"click",validator:function(e){return["click","focus","hover","manual"].indexOf(e)>-1}},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:200},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(o.generateId)()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),t&&(Object(a.addClass)(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),i.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(a.on)(t,"focusin",(function(){e.handleFocus();var i=t.__vue__;i&&"function"==typeof i.focus&&i.focus()})),Object(a.on)(i,"focusin",this.handleFocus),Object(a.on)(t,"focusout",this.handleBlur),Object(a.on)(i,"focusout",this.handleBlur)),Object(a.on)(t,"keydown",this.handleKeydown),Object(a.on)(t,"click",this.handleClick)),"click"===this.trigger?(Object(a.on)(t,"click",this.doToggle),Object(a.on)(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(a.on)(t,"mouseenter",this.handleMouseEnter),Object(a.on)(i,"mouseenter",this.handleMouseEnter),Object(a.on)(t,"mouseleave",this.handleMouseLeave),Object(a.on)(i,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(a.on)(t,"focusin",this.doShow),Object(a.on)(t,"focusout",this.doClose)):(Object(a.on)(t,"mousedown",this.doShow),Object(a.on)(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(a.addClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(a.removeClass)(this.referenceElm,"focusing")},handleBlur:function(){Object(a.removeClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout((function(){e.showPopper=!0}),this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this.closeDelay?this._timer=setTimeout((function(){e.showPopper=!1}),this.closeDelay):this.showPopper=!1},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$refs.wrapper.children&&(t=this.referenceElm=this.$refs.wrapper.children[0]),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&i&&!i.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){(this.openDelay||this.closeDelay)&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(a.off)(e,"click",this.doToggle),Object(a.off)(e,"mouseup",this.doClose),Object(a.off)(e,"mousedown",this.doShow),Object(a.off)(e,"focusin",this.doShow),Object(a.off)(e,"focusout",this.doClose),Object(a.off)(e,"mousedown",this.doShow),Object(a.off)(e,"mouseup",this.doClose),Object(a.off)(e,"mouseleave",this.handleMouseLeave),Object(a.off)(e,"mouseenter",this.handleMouseEnter),Object(a.off)(document,"click",this.handleDocumentClick)}},u=i(0),c=Object(u.a)(l,n,[],!1,null,null,null);c.options.__file="packages/popover/src/main.vue";var d=c.exports,h=function(e,t,i){var n=t.expression?t.value:t.arg,r=i.context.$refs[n];r&&(Array.isArray(r)?r[0].$refs.reference=e:r.$refs.reference=e)},p={bind:function(e,t,i){h(e,t,i)},inserted:function(e,t,i){h(e,t,i)}},f=i(7);i.n(f).a.directive("popover",p),d.install=function(e){e.directive("popover",p),e.component(d.name,d)},d.directive=p;t.default=d}})},function(e,t,i){},function(e,t,i){},function(e,t,i){},function(e,t,i){"use strict";var n=i(7),r=i(3),s=i(100),a=i(13),o=i(10),l=i(34),u=i(234),c=i(68),d=i(142),h=i(2),p=i(27),f=i(45).f,m=i(26).f,v=i(11).f,g=i(223).trim,_=r.Number,b=_.prototype,y="Number"==l(p(b)),x=function(e){if(c(e))throw TypeError("Cannot convert a Symbol value to a number");var t,i,n,r,s,a,o,l,u=d(e,"number");if("string"==typeof u&&u.length>2)if(43===(t=(u=g(u)).charCodeAt(0))||45===t){if(88===(i=u.charCodeAt(2))||120===i)return NaN}else if(48===t){switch(u.charCodeAt(1)){case 66:case 98:n=2,r=49;break;case 79:case 111:n=8,r=55;break;default:return+u}for(a=(s=u.slice(2)).length,o=0;or)return NaN;return parseInt(s,n)}return+u};if(s("Number",!_(" 0o1")||!_("0b1")||_("+0x1"))){for(var k,w=function(e){var t=arguments.length<1?0:e,i=this;return i instanceof w&&(y?h((function(){b.valueOf.call(i)})):"Number"!=l(i))?u(new _(x(t)),i,w):x(t)},C=n?f(_):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range".split(","),S=0;C.length>S;S++)o(_,k=C[S])&&!o(w,k)&&v(w,k,m(_,k));w.prototype=b,b.constructor=w,a(r,"Number",w)}},function(e,t,i){"use strict";i(206)},function(e,t,i){"use strict";var n=i(1),r=i(33).every;n({target:"Array",proto:!0,forced:!i(40)("every")},{every:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}})},function(e,t,i){var n=i(13),r=Date.prototype,s=r.toString,a=r.getTime;"Invalid Date"!=String(new Date(NaN))&&n(r,"toString",(function(){var e=a.call(this);return e==e?s.call(this):"Invalid Date"}))},function(e,t,i){},function(e,t,i){},function(e,t,i){"use strict";var n=i(31),r=i(8),s=[].slice,a={},o=function(e,t,i){if(!(t in a)){for(var n=[],r=0;r=0&&(t=e.slice(n),e=e.slice(0,n));var r=e.indexOf("?");return r>=0&&(i=e.slice(r+1),e=e.slice(0,r)),{path:e,query:i,hash:t}}(r.path||""),c=t&&t.path||"/",p=u.path?S(u.path,c,i||r.append):c,f=function(e,t,i){void 0===t&&(t={});var n,r=i||h;try{n=r(e||"")}catch(e){n={}}for(var s in t){var a=t[s];n[s]=Array.isArray(a)?a.map(d):d(a)}return n}(u.query,r.query,n&&n.options.parseQuery),m=r.hash||u.hash;return m&&"#"!==m.charAt(0)&&(m="#"+m),{_normalized:!0,path:p,query:f,hash:m}}var U,G=function(){},Y={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,i=this.$router,n=this.$route,r=i.resolve(this.to,n,this.append),a=r.location,o=r.route,l=r.href,u={},c=i.options.linkActiveClass,d=i.options.linkExactActiveClass,h=null==c?"router-link-active":c,p=null==d?"router-link-exact-active":d,v=null==this.activeClass?h:this.activeClass,g=null==this.exactActiveClass?p:this.exactActiveClass,_=o.redirectedFrom?m(null,q(o.redirectedFrom),null,i):o;u[g]=y(n,_,this.exactPath),u[v]=this.exact||this.exactPath?u[g]:function(e,t){return 0===e.path.replace(f,"/").indexOf(t.path.replace(f,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var i in t)if(!(i in e))return!1;return!0}(e.query,t.query)}(n,_);var b=u[g]?this.ariaCurrentValue:null,x=function(e){K(e)&&(t.replace?i.replace(a,G):i.push(a,G))},k={click:K};Array.isArray(this.event)?this.event.forEach((function(e){k[e]=x})):k[this.event]=x;var w={class:u},C=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:l,route:o,navigate:x,isActive:u[v],isExactActive:u[g]});if(C){if(1===C.length)return C[0];if(C.length>1||!C.length)return 0===C.length?e():e("span",{},C)}if("a"===this.tag)w.on=k,w.attrs={href:l,"aria-current":b};else{var S=function e(t){var i;if(t)for(var n=0;n-1&&(o.params[h]=i.params[h]);return o.path=W(c.path,o.params),l(c,o,a)}if(o.path){o.params={};for(var p=0;p=e.length?i():e[r]?t(e[r],(function(){n(r+1)})):n(r+1)};n(0)}var xe={redirected:2,aborted:4,cancelled:8,duplicated:16};function ke(e,t){return Ce(e,t,xe.redirected,'Redirected when going from "'+e.fullPath+'" to "'+function(e){if("string"==typeof e)return e;if("path"in e)return e.path;var t={};return Se.forEach((function(i){i in e&&(t[i]=e[i])})),JSON.stringify(t,null,2)}(t)+'" via a navigation guard.')}function we(e,t){return Ce(e,t,xe.cancelled,'Navigation cancelled from "'+e.fullPath+'" to "'+t.fullPath+'" with a new navigation.')}function Ce(e,t,i,n){var r=new Error(n);return r._isRouter=!0,r.from=e,r.to=t,r.type=i,r}var Se=["params","query","hash"];function Oe(e){return Object.prototype.toString.call(e).indexOf("Error")>-1}function De(e,t){return Oe(e)&&e._isRouter&&(null==t||e.type===t)}function Ee(e){return function(t,i,n){var r=!1,s=0,a=null;Te(e,(function(e,t,i,o){if("function"==typeof e&&void 0===e.cid){r=!0,s++;var l,u=je((function(t){var r;((r=t).__esModule||Pe&&"Module"===r[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:U.extend(t),i.components[o]=t,--s<=0&&n()})),c=je((function(e){var t="Failed to resolve async component "+o+": "+e;a||(a=Oe(e)?e:new Error(t),n(a))}));try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var d=l.component;d&&"function"==typeof d.then&&d.then(u,c)}}})),r||n()}}function Te(e,t){return $e(e.map((function(e){return Object.keys(e.components).map((function(i){return t(e.components[i],e.instances[i],e,i)}))})))}function $e(e){return Array.prototype.concat.apply([],e)}var Pe="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function je(e){var t=!1;return function(){for(var i=[],n=arguments.length;n--;)i[n]=arguments[n];if(!t)return t=!0,e.apply(this,i)}}var Me=function(e,t){this.router=e,this.base=function(e){if(!e)if(X){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=g,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Ie(e,t,i,n){var r=Te(e,(function(e,n,r,s){var a=function(e,t){"function"!=typeof e&&(e=U.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return i(e,n,r,s)})):i(a,n,r,s)}));return $e(n?r.reverse():r)}function Ae(e,t){if(t)return function(){return e.apply(t,arguments)}}Me.prototype.listen=function(e){this.cb=e},Me.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Me.prototype.onError=function(e){this.errorCbs.push(e)},Me.prototype.transitionTo=function(e,t,i){var n,r=this;try{n=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var s=this.current;this.confirmTransition(n,(function(){r.updateRoute(n),t&&t(n),r.ensureURL(),r.router.afterHooks.forEach((function(e){e&&e(n,s)})),r.ready||(r.ready=!0,r.readyCbs.forEach((function(e){e(n)})))}),(function(e){i&&i(e),e&&!r.ready&&(De(e,xe.redirected)&&s===g||(r.ready=!0,r.readyErrorCbs.forEach((function(t){t(e)}))))}))},Me.prototype.confirmTransition=function(e,t,i){var n=this,r=this.current;this.pending=e;var s,a,o=function(e){!De(e)&&Oe(e)&&(n.errorCbs.length?n.errorCbs.forEach((function(t){t(e)})):console.error(e)),i&&i(e)},l=e.matched.length-1,u=r.matched.length-1;if(y(e,r)&&l===u&&e.matched[l]===r.matched[u])return this.ensureURL(),o(((a=Ce(s=r,e,xe.duplicated,'Avoided redundant navigation to current location: "'+s.fullPath+'".')).name="NavigationDuplicated",a));var c=function(e,t){var i,n=Math.max(e.length,t.length);for(i=0;i0)){var t=this.router,i=t.options.scrollBehavior,n=ge&&i;n&&this.listeners.push(oe());var r=function(){var i=e.current,r=Le(e.base);e.current===g&&r===e._startLocation||e.transitionTo(r,(function(e){n&&le(t,e,i,!0)}))};window.addEventListener("popstate",r),this.listeners.push((function(){window.removeEventListener("popstate",r)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,i){var n=this,r=this.current;this.transitionTo(e,(function(e){_e(O(n.base+e.fullPath)),le(n.router,e,r,!1),t&&t(e)}),i)},t.prototype.replace=function(e,t,i){var n=this,r=this.current;this.transitionTo(e,(function(e){be(O(n.base+e.fullPath)),le(n.router,e,r,!1),t&&t(e)}),i)},t.prototype.ensureURL=function(e){if(Le(this.base)!==this.current.fullPath){var t=O(this.base+this.current.fullPath);e?_e(t):be(t)}},t.prototype.getCurrentLocation=function(){return Le(this.base)},t}(Me);function Le(e){var t=window.location.pathname,i=t.toLowerCase(),n=e.toLowerCase();return!e||i!==n&&0!==i.indexOf(O(n+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Fe=function(e){function t(t,i,n){e.call(this,t,i),n&&function(e){var t=Le(e);if(!/^\/#/.test(t))return window.location.replace(O(e+"/#"+t)),!0}(this.base)||Ve()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,i=ge&&t;i&&this.listeners.push(oe());var n=function(){var t=e.current;Ve()&&e.transitionTo(ze(),(function(n){i&&le(e.router,n,t,!0),ge||He(n.fullPath)}))},r=ge?"popstate":"hashchange";window.addEventListener(r,n),this.listeners.push((function(){window.removeEventListener(r,n)}))}},t.prototype.push=function(e,t,i){var n=this,r=this.current;this.transitionTo(e,(function(e){Be(e.fullPath),le(n.router,e,r,!1),t&&t(e)}),i)},t.prototype.replace=function(e,t,i){var n=this,r=this.current;this.transitionTo(e,(function(e){He(e.fullPath),le(n.router,e,r,!1),t&&t(e)}),i)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;ze()!==t&&(e?Be(t):He(t))},t.prototype.getCurrentLocation=function(){return ze()},t}(Me);function Ve(){var e=ze();return"/"===e.charAt(0)||(He("/"+e),!1)}function ze(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Re(e){var t=window.location.href,i=t.indexOf("#");return(i>=0?t.slice(0,i):t)+"#"+e}function Be(e){ge?_e(Re(e)):window.location.hash=e}function He(e){ge?be(Re(e)):window.location.replace(Re(e))}var We=function(e){function t(t,i){e.call(this,t,i),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,i){var n=this;this.transitionTo(e,(function(e){n.stack=n.stack.slice(0,n.index+1).concat(e),n.index++,t&&t(e)}),i)},t.prototype.replace=function(e,t,i){var n=this;this.transitionTo(e,(function(e){n.stack=n.stack.slice(0,n.index).concat(e),t&&t(e)}),i)},t.prototype.go=function(e){var t=this,i=this.index+e;if(!(i<0||i>=this.stack.length)){var n=this.stack[i];this.confirmTransition(n,(function(){var e=t.current;t.index=i,t.updateRoute(n),t.router.afterHooks.forEach((function(t){t&&t(n,e)}))}),(function(e){De(e,xe.duplicated)&&(t.index=i)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Me),qe=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=J(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!ge&&!1!==e.fallback,this.fallback&&(t="hash"),X||(t="abstract"),this.mode=t,t){case"history":this.history=new Ne(this,e.base);break;case"hash":this.history=new Fe(this,e.base,this.fallback);break;case"abstract":this.history=new We(this,e.base);break;default:0}},Ue={currentRoute:{configurable:!0}};function Ge(e,t){return e.push(t),function(){var i=e.indexOf(t);i>-1&&e.splice(i,1)}}qe.prototype.match=function(e,t,i){return this.matcher.match(e,t,i)},Ue.currentRoute.get=function(){return this.history&&this.history.current},qe.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var i=t.apps.indexOf(e);i>-1&&t.apps.splice(i,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var i=this.history;if(i instanceof Ne||i instanceof Fe){var n=function(e){i.setupListeners(),function(e){var n=i.current,r=t.options.scrollBehavior;ge&&r&&"fullPath"in e&&le(t,e,n,!1)}(e)};i.transitionTo(i.getCurrentLocation(),n,n)}i.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},qe.prototype.beforeEach=function(e){return Ge(this.beforeHooks,e)},qe.prototype.beforeResolve=function(e){return Ge(this.resolveHooks,e)},qe.prototype.afterEach=function(e){return Ge(this.afterHooks,e)},qe.prototype.onReady=function(e,t){this.history.onReady(e,t)},qe.prototype.onError=function(e){this.history.onError(e)},qe.prototype.push=function(e,t,i){var n=this;if(!t&&!i&&"undefined"!=typeof Promise)return new Promise((function(t,i){n.history.push(e,t,i)}));this.history.push(e,t,i)},qe.prototype.replace=function(e,t,i){var n=this;if(!t&&!i&&"undefined"!=typeof Promise)return new Promise((function(t,i){n.history.replace(e,t,i)}));this.history.replace(e,t,i)},qe.prototype.go=function(e){this.history.go(e)},qe.prototype.back=function(){this.go(-1)},qe.prototype.forward=function(){this.go(1)},qe.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},qe.prototype.resolve=function(e,t,i){var n=q(e,t=t||this.history.current,i,this),r=this.match(n,t),s=r.redirectedFrom||r.fullPath;return{location:n,route:r,href:function(e,t,i){var n="hash"===i?"#"+t:t;return e?O(e+"/"+n):n}(this.history.base,s,this.mode),normalizedTo:n,resolved:r}},qe.prototype.getRoutes=function(){return this.matcher.getRoutes()},qe.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},qe.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(qe.prototype,Ue),qe.install=function e(t){if(!e.installed||U!==t){e.installed=!0,U=t;var i=function(e){return void 0!==e},n=function(e,t){var n=e.$options._parentVnode;i(n)&&i(n=n.data)&&i(n=n.registerRouteInstance)&&n(e,t)};t.mixin({beforeCreate:function(){i(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,n(this,this)},destroyed:function(){n(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",w),t.component("RouterLink",Y);var r=t.config.optionMergeStrategies;r.beforeRouteEnter=r.beforeRouteLeave=r.beforeRouteUpdate=r.created}},qe.version="3.5.2",qe.isNavigationFailure=De,qe.NavigationFailureType=xe,qe.START_LOCATION=g,X&&window.Vue&&window.Vue.use(qe);var Ye=qe;i(166),i(167),i(255),i(98),i(222),i(59),i(96),i(257);function Ke(e){e.locales&&Object.keys(e.locales).forEach((function(t){e.locales[t].path=t})),Object.freeze(e)}i(42),i(52),i(82);var Xe=i(37),Ze=(i(174),i(56),i(95),i(229),i(230),{NotFound:function(){return i.e(13).then(i.bind(null,523))},Layout:function(){return Promise.all([i.e(0),i.e(1),i.e(3),i.e(6)]).then(i.bind(null,522))}}),Qe={"v-12ba3bb3":function(){return i.e(15).then(i.bind(null,530))},"v-39778893":function(){return i.e(16).then(i.bind(null,531))},"v-19f50016":function(){return i.e(21).then(i.bind(null,532))},"v-11d701b0":function(){return i.e(22).then(i.bind(null,533))},"v-ae3fc19a":function(){return i.e(23).then(i.bind(null,534))},"v-68042ff3":function(){return i.e(24).then(i.bind(null,535))},"v-0670ce5a":function(){return i.e(25).then(i.bind(null,536))},"v-5a12e669":function(){return i.e(26).then(i.bind(null,537))},"v-3a742ac2":function(){return i.e(27).then(i.bind(null,538))},"v-2335d15a":function(){return i.e(28).then(i.bind(null,539))},"v-0cdcef91":function(){return i.e(29).then(i.bind(null,540))},"v-70e16acf":function(){return i.e(30).then(i.bind(null,541))},"v-fa79849a":function(){return i.e(31).then(i.bind(null,542))},"v-0401205a":function(){return i.e(32).then(i.bind(null,543))},"v-2c2d5cdb":function(){return i.e(33).then(i.bind(null,544))},"v-6779dcc1":function(){return i.e(34).then(i.bind(null,545))},"v-00fd3d65":function(){return i.e(35).then(i.bind(null,546))},"v-04ba1293":function(){return i.e(36).then(i.bind(null,547))},"v-82e6d25a":function(){return i.e(37).then(i.bind(null,548))},"v-673913da":function(){return i.e(38).then(i.bind(null,549))},"v-5efa98ed":function(){return i.e(39).then(i.bind(null,550))},"v-6e3f1e13":function(){return i.e(40).then(i.bind(null,551))},"v-33e095f3":function(){return i.e(41).then(i.bind(null,552))},"v-66d83c29":function(){return i.e(42).then(i.bind(null,553))},"v-21ecd622":function(){return i.e(43).then(i.bind(null,554))},"v-dd2f48da":function(){return i.e(44).then(i.bind(null,555))},"v-6c53f528":function(){return i.e(14).then(i.bind(null,556))},"v-0a8dba53":function(){return i.e(45).then(i.bind(null,557))},"v-733fd353":function(){return i.e(46).then(i.bind(null,558))},"v-531b3b1a":function(){return i.e(47).then(i.bind(null,559))},"v-8e6f27ae":function(){return i.e(48).then(i.bind(null,560))},"v-37c7ba37":function(){return i.e(49).then(i.bind(null,561))},"v-62315253":function(){return i.e(50).then(i.bind(null,562))},"v-6c781c1a":function(){return i.e(51).then(i.bind(null,563))},"v-58cd4fb3":function(){return i.e(52).then(i.bind(null,564))},"v-3a8b6533":function(){return i.e(53).then(i.bind(null,565))},"v-47205bd3":function(){return i.e(54).then(i.bind(null,566))},"v-e776b66a":function(){return i.e(55).then(i.bind(null,567))},"v-109f79da":function(){return i.e(56).then(i.bind(null,568))},"v-d1885d0a":function(){return i.e(57).then(i.bind(null,569))},"v-53edfe1a":function(){return i.e(58).then(i.bind(null,570))},"v-1091e99e":function(){return i.e(59).then(i.bind(null,571))},"v-1f1ab335":function(){return i.e(60).then(i.bind(null,572))},"v-2a31a573":function(){return i.e(61).then(i.bind(null,573))},"v-915cd0da":function(){return i.e(62).then(i.bind(null,574))},"v-4d91676a":function(){return i.e(63).then(i.bind(null,575))},"v-2d0f5d02":function(){return i.e(64).then(i.bind(null,576))},"v-0dc527bf":function(){return i.e(65).then(i.bind(null,577))},"v-3cd4af93":function(){return i.e(66).then(i.bind(null,578))},"v-dd48008e":function(){return i.e(67).then(i.bind(null,579))},"v-3bab3327":function(){return i.e(68).then(i.bind(null,580))},"v-2646021f":function(){return i.e(69).then(i.bind(null,581))},"v-41e4a721":function(){return i.e(70).then(i.bind(null,582))},"v-00834891":function(){return i.e(71).then(i.bind(null,583))},"v-470b6766":function(){return i.e(72).then(i.bind(null,584))},"v-ba66cabe":function(){return i.e(73).then(i.bind(null,585))},"v-26272be9":function(){return i.e(74).then(i.bind(null,586))},"v-10b7977f":function(){return i.e(75).then(i.bind(null,587))},"v-3a24bda3":function(){return i.e(76).then(i.bind(null,588))},"v-bb252ada":function(){return i.e(77).then(i.bind(null,589))},"v-12d02db9":function(){return i.e(78).then(i.bind(null,590))},"v-d193ea9a":function(){return i.e(79).then(i.bind(null,591))},"v-056fc51a":function(){return i.e(80).then(i.bind(null,592))},"v-3eaf113e":function(){return i.e(81).then(i.bind(null,593))},"v-430e4d1d":function(){return i.e(82).then(i.bind(null,594))},"v-2ba71c73":function(){return i.e(83).then(i.bind(null,595))},"v-63be8269":function(){return i.e(84).then(i.bind(null,596))},"v-5893f913":function(){return i.e(85).then(i.bind(null,597))},"v-39cfce57":function(){return i.e(86).then(i.bind(null,598))},"v-5676163e":function(){return i.e(87).then(i.bind(null,599))},"v-0d497ba1":function(){return i.e(88).then(i.bind(null,600))},"v-61357bbe":function(){return i.e(89).then(i.bind(null,601))},"v-60c8a861":function(){return i.e(90).then(i.bind(null,602))},"v-62b61eb1":function(){return i.e(91).then(i.bind(null,603))},"v-ee6c62be":function(){return i.e(92).then(i.bind(null,604))},"v-551c7ba1":function(){return i.e(93).then(i.bind(null,605))},"v-1ecbc9e1":function(){return i.e(94).then(i.bind(null,606))},"v-547c3061":function(){return i.e(95).then(i.bind(null,607))},"v-49c45526":function(){return i.e(96).then(i.bind(null,608))},"v-63e1089d":function(){return i.e(97).then(i.bind(null,609))},"v-7c9fc59a":function(){return i.e(98).then(i.bind(null,610))},"v-186917a6":function(){return i.e(99).then(i.bind(null,611))},"v-539b4fc1":function(){return i.e(100).then(i.bind(null,612))},"v-c6507cce":function(){return i.e(101).then(i.bind(null,613))},"v-3f086ebe":function(){return i.e(102).then(i.bind(null,614))},"v-2393ae36":function(){return i.e(103).then(i.bind(null,615))},"v-941099be":function(){return i.e(104).then(i.bind(null,616))},"v-63121a73":function(){return i.e(105).then(i.bind(null,617))},"v-1bca3f13":function(){return i.e(106).then(i.bind(null,618))},"v-681a3333":function(){return i.e(107).then(i.bind(null,619))},"v-56bc7428":function(){return i.e(17).then(i.bind(null,620))},"v-6a252d45":function(){return i.e(18).then(i.bind(null,621))},"v-4f51c953":function(){return i.e(20).then(i.bind(null,622))},"v-58f572e4":function(){return i.e(19).then(i.bind(null,623))}};function Je(e){var t=Object.create(null);return function(i){return t[i]||(t[i]=e(i))}}var et=/-(\w)/g,tt=Je((function(e){return e.replace(et,(function(e,t){return t?t.toUpperCase():""}))})),it=/\B([A-Z])/g,nt=Je((function(e){return e.replace(it,"-$1").toLowerCase()})),rt=Je((function(e){return e.charAt(0).toUpperCase()+e.slice(1)}));function st(e,t){if(t)return e(t)?e(t):t.includes("-")?e(rt(tt(t))):e(rt(t))||e(nt(t))}var at=Object.assign({},Ze,Qe),ot=function(e){return at[e]},lt=function(e){return Qe[e]},ut=function(e){return Ze[e]},ct=function(e){return r.default.component(e)};function dt(e){return st(lt,e)}function ht(e){return st(ut,e)}function pt(e){return st(ot,e)}function ft(e){return st(ct,e)}function mt(){for(var e=arguments.length,t=new Array(e),i=0;i"})).join("\n "):"",this.$ssrContext.canonicalLink=wt(this.$canonicalUrl)}var t},mounted:function(){this.currentMetaTags=Object(Xe.a)(document.querySelectorAll("meta")),this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var e=this.getMergedMetaTags();this.currentMetaTags=Ct(e,this.currentMetaTags)},getMergedMetaTags:function(){var e=this.$page.frontmatter.meta||[];return yt()([{name:"description",content:this.$description}],e,this.siteMeta,St)},updateCanonicalLink:function(){kt(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",wt(this.$canonicalUrl))}},watch:{$page:function(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy:function(){Ct(null,this.currentMetaTags),kt()}};function kt(){var e=document.querySelector("link[rel='canonical']");e&&e.remove()}function wt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e?''):""}function Ct(e,t){if(t&&Object(Xe.a)(t).filter((function(e){return e.parentNode===document.head})).forEach((function(e){return document.head.removeChild(e)})),e)return e.map((function(e){var t=document.createElement("meta");return Object.keys(e).forEach((function(i){t.setAttribute(i,e[i])})),document.head.appendChild(t),t}))}function St(e){for(var t=0,i=["name","property","itemprop"];t=o.parentElement.offsetTop+10&&(!l||n-1&&t.splice(i,1)}}function Kt(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var i=e.state;Zt(e,i,[],e._modules.root,!0),Xt(e,i,t)}function Xt(e,t,i){var n=e._vm;e.getters={},e._makeLocalGettersCache=Object.create(null);var r=e._wrappedGetters,s={};zt(r,(function(t,i){s[i]=function(e,t){return function(){return e(t)}}(t,e),Object.defineProperty(e.getters,i,{get:function(){return e._vm[i]},enumerable:!0})}));var a=qt.config.silent;qt.config.silent=!0,e._vm=new qt({data:{$$state:t},computed:s}),qt.config.silent=a,e.strict&&function(e){e._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}(e),n&&(i&&e._withCommit((function(){n._data.$$state=null})),qt.nextTick((function(){return n.$destroy()})))}function Zt(e,t,i,n,r){var s=!i.length,a=e._modules.getNamespace(i);if(n.namespaced&&(e._modulesNamespaceMap[a],e._modulesNamespaceMap[a]=n),!s&&!r){var o=Qt(t,i.slice(0,-1)),l=i[i.length-1];e._withCommit((function(){qt.set(o,l,n.state)}))}var u=n.context=function(e,t,i){var n=""===t,r={dispatch:n?e.dispatch:function(i,n,r){var s=Jt(i,n,r),a=s.payload,o=s.options,l=s.type;return o&&o.root||(l=t+l),e.dispatch(l,a)},commit:n?e.commit:function(i,n,r){var s=Jt(i,n,r),a=s.payload,o=s.options,l=s.type;o&&o.root||(l=t+l),e.commit(l,a,o)}};return Object.defineProperties(r,{getters:{get:n?function(){return e.getters}:function(){return function(e,t){if(!e._makeLocalGettersCache[t]){var i={},n=t.length;Object.keys(e.getters).forEach((function(r){if(r.slice(0,n)===t){var s=r.slice(n);Object.defineProperty(i,s,{get:function(){return e.getters[r]},enumerable:!0})}})),e._makeLocalGettersCache[t]=i}return e._makeLocalGettersCache[t]}(e,t)}},state:{get:function(){return Qt(e.state,i)}}}),r}(e,a,i);n.forEachMutation((function(t,i){!function(e,t,i,n){(e._mutations[t]||(e._mutations[t]=[])).push((function(t){i.call(e,n.state,t)}))}(e,a+i,t,u)})),n.forEachAction((function(t,i){var n=t.root?i:a+i,r=t.handler||t;!function(e,t,i,n){(e._actions[t]||(e._actions[t]=[])).push((function(t){var r,s=i.call(e,{dispatch:n.dispatch,commit:n.commit,getters:n.getters,state:n.state,rootGetters:e.getters,rootState:e.state},t);return(r=s)&&"function"==typeof r.then||(s=Promise.resolve(s)),e._devtoolHook?s.catch((function(t){throw e._devtoolHook.emit("vuex:error",t),t})):s}))}(e,n,r,u)})),n.forEachGetter((function(t,i){!function(e,t,i,n){if(e._wrappedGetters[t])return void 0;e._wrappedGetters[t]=function(e){return i(n.state,n.getters,e.state,e.getters)}}(e,a+i,t,u)})),n.forEachChild((function(n,s){Zt(e,t,i.concat(s),n,r)}))}function Qt(e,t){return t.reduce((function(e,t){return e[t]}),e)}function Jt(e,t,i){return Rt(e)&&e.type&&(i=t,t=e,e=e.type),{type:e,payload:t,options:i}}function ei(e){qt&&e===qt|| /*! * vuex v3.6.2 * (c) 2021 Evan You diff --git a/codegen/_domainspec.html b/codegen/_domainspec.html index 302c018041..73394dbf19 100644 --- a/codegen/_domainspec.html +++ b/codegen/_domainspec.html @@ -8,7 +8,7 @@ - + @@ -29,6 +29,6 @@
GitHub (opens new window)
Base template:
Finetune characteristics (optional):
Agent:
Concurrency:
Constraints:
Dynamics:
Events:
Goals:
Initialization:
Memory:
Observability:
Renderability:
Value:
- + diff --git a/codegen/_solverspec.html b/codegen/_solverspec.html index 7e7e616faa..0f0d3c43b0 100644 --- a/codegen/_solverspec.html +++ b/codegen/_solverspec.html @@ -8,7 +8,7 @@ - + @@ -29,6 +29,6 @@ GitHub (opens new window)
Base template:
Finetune characteristics (optional):
Assessability:
Parallelability:
Policy:
Restorability:
- + diff --git a/codegen/index.html b/codegen/index.html index f23b2b279d..093c3a7945 100644 --- a/codegen/index.html +++ b/codegen/index.html @@ -8,7 +8,7 @@ - + @@ -81,10 +81,10 @@ def _get_applicable_actions_from(self, memory: Memory[D.T_state]) -> StrDict[Space[D.T_event]]: pass - def _get_action_space_(self) -> StrDict[Space[D.T_event]]: + def _get_enabled_events_from(self, memory: Memory[D.T_state]) -> Space[D.T_event]: pass - def _get_enabled_events_from(self, memory: Memory[D.T_state]) -> Space[D.T_event]: + def _get_action_space_(self) -> StrDict[Space[D.T_event]]: pass def _get_observation_space_(self) -> StrDict[Space[D.T_observation]]: @@ -95,6 +95,6 @@
- + diff --git a/contribute.html b/contribute.html index 7f56c35c42..ce72d03338 100644 --- a/contribute.html +++ b/contribute.html @@ -8,7 +8,7 @@ - + @@ -117,6 +117,6 @@

This post (opens new window) points out good practices to follow to submit great pull requests and review them efficiently.

# Prior checks

Before submitting your pull request, think to

If you do not, you will still be able to see the status of your PR as CI will do these checks for you.

# Reorganizing commits

On your way to implement your contribution, you will probably have lots of commits, some modifying other ones from the same PR, or only modifying the code style.

At the end of your work, consider reorganizing them by

You can use git rebase -i to do that, as explained in git documentation (opens new window).

- + diff --git a/guide/index.html b/guide/index.html index 308d73dc05..c211cca889 100644 --- a/guide/index.html +++ b/guide/index.html @@ -8,7 +8,7 @@ - + @@ -72,6 +72,6 @@ utils.rollout(MyDomain(), mysolver)

# Examples

# Notebooks

Go to the dedicated Notebooks page to see a curated list of notebooks recommended to start with scikit-decide.

# Python scripts

More examples can be found in the examples/ folder, showing how to import or define a domain, and how to run or solve it. Most of the examples rely on scikit-decide Hub, an extensible catalog of domains/solvers.

# Playground

The best example to try out scikit-decide capabilities might be examples/full_multisolve.py. This interactive console experience makes it easy to pick a domain among a pre-defined catalog selection:

...and then solve it with any compatible solver (detected automatically) among following selection:

Note: some requirements declared in above solvers still need fine-tuning, so in some cases an auto-detected compatible solver may still be unable to solve a domain (for now).

These combinations are particularly efficient if you want to try them out:

WARNING

Some domains/solvers might require extra manual setup steps to work at 100%. In the future, each scikit-decide hub entry might have a dedicated help page to list them, but in the meantime please refer to this:

# Code generators

Go to Code generators for assistance when creating a new domain or solver.

# Roadmap

Following features will be added to scikit-decide soon:

- + diff --git a/index.html b/index.html index 317b29d582..92226e6fa5 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@ - + @@ -53,6 +53,6 @@

Problem solving

Describe your decision-making problem once and auto-match compatible solvers.

Growing catalog

Enjoy a growing list of domains & solvers catalog, supported by the community.

Open & Extensible

Scikit-decide is open source and is able to wrap existing state-of-the-art domains/solvers.

# Welcome to scikit-decide

# What is it?

Scikit-decide is an AI framework for Reinforcement Learning, Automated Planning and Scheduling.

This framework was initiated at Airbus (opens new window) AI Research.

TIP

Please refer to the Guide and Reference sections at the top to learn how to use scikit-decide.

- + diff --git a/install.html b/install.html index 2f18d95379..3bc675bea4 100644 --- a/install.html +++ b/install.html @@ -8,7 +8,7 @@ - + @@ -112,6 +112,6 @@

Note

Newer versions of gym or gymnasium (opens new window), typically greater than 0.26 are not yet possible because of a conflict between ray[rllib] (opens new window) and stable-baselines3 (opens new window).

- + diff --git a/notebooks/index.html b/notebooks/index.html index b028344648..cb73efec6e 100644 --- a/notebooks/index.html +++ b/notebooks/index.html @@ -8,7 +8,7 @@ - + @@ -49,6 +49,6 @@ it has a shaped or dense reward (i.e. not sparse) which can be used successfully when solving, as opposed to the other "Mountain Car" environments. For reminder, a sparse reward is a reward which is null almost everywhere, whereas a dense or shaped reward has more meaningful values for most transitions.

This problem has been chosen for two reasons:

Therefore in this notebook we will go through the following steps:

# Introduction to scheduling

Github (opens new window) Binder (opens new window)

In this notebook, we explore how to solve a resource constrained project scheduling problem (RCPSP).

The problem is made of activities that have precedence constraints. That means that if activity is a successor of activity , then activity must be completed before activity can be started

On top of these constraints, each project is assigned a set of K renewable resources where each resource is available in units for the entire duration of the project. Each activity may require one or more of these resources to be completed. While scheduling the activities, the daily resource usage for resource can not exceed units.

Each activity takes time units to complete.

The overall goal of the problem is usually to minimize the makespan.

A classic variant of RCPSP is the multimode RCPSP where each task can be executed in several ways (one way=one mode). A typical example is :

Mode n°1 'Fast mode': high resource consumption and fast Mode n°2 'Slow mode' : low resource consumption but slow

# Benchmarking scikit-decide solvers

Github (opens new window) Binder (opens new window)

This notebook demonstrates how to run and compare scikit-decide solvers compatible with a given domain.

This benchmark is supported by Ray Tune (opens new window), a scalable Python library for experiment execution and hyperparameter tuning (incl. running experiments in parallel and logging results to Tensorboard).

Benchmarking is important since the most efficient solvers might greatly vary depending on the domain.

# Flight Planning Domain

Github (opens new window) Binder (opens new window)

This notebook aims to make a short and interactive example of the Flight Planning Domain. You can find more information about it in the README file.

- + diff --git a/reference/_skdecide.builders.domain.agent.html b/reference/_skdecide.builders.domain.agent.html index 9d4736a315..92f53286d1 100644 --- a/reference/_skdecide.builders.domain.agent.html +++ b/reference/_skdecide.builders.domain.agent.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# builders.domain.agent

Domain specification

Domain

# MultiAgent

A domain must inherit this class if it is multi-agent (i.e hosting multiple independent agents).

Agents are identified by (string) agent names.

# SingleAgent

A domain must inherit this class if it is single-agent (i.e hosting only one agent).

- + diff --git a/reference/_skdecide.builders.domain.concurrency.html b/reference/_skdecide.builders.domain.concurrency.html index c2042a035b..6f3fd0a632 100644 --- a/reference/_skdecide.builders.domain.concurrency.html +++ b/reference/_skdecide.builders.domain.concurrency.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# builders.domain.concurrency

Domain specification

Domain

# Parallel

A domain must inherit this class if multiple events/actions can happen in parallel.

# Sequential

A domain must inherit this class if its events/actions are sequential (non-parallel).

- + diff --git a/reference/_skdecide.builders.domain.constraints.html b/reference/_skdecide.builders.domain.constraints.html index 70bc5bd839..c6b9777036 100644 --- a/reference/_skdecide.builders.domain.constraints.html +++ b/reference/_skdecide.builders.domain.constraints.html @@ -8,7 +8,7 @@ - + @@ -57,6 +57,6 @@

Get the domain constraints.

This is a helper function called by default from Constrained.get_constraints(), the difference being that the result is not cached here.

TIP

The underscore at the end of this function's name is a convention to remind that its result should be constant.

# Returns

The list of constraints.

- + diff --git a/reference/_skdecide.builders.domain.dynamics.html b/reference/_skdecide.builders.domain.dynamics.html index 3d171ad51e..4c2a6d52f0 100644 --- a/reference/_skdecide.builders.domain.dynamics.html +++ b/reference/_skdecide.builders.domain.dynamics.html @@ -8,7 +8,7 @@ - + @@ -377,6 +377,6 @@ ATARI games), it is recommended to overwrite Environment._step() to call the external environment and not use the Environment._state_step() helper function.

WARNING

Before calling Environment._step() the first time or when the end of an episode is reached, Initializable._reset() must be called to reset the environment's state.

# Parameters

# Returns

The environment outcome of this step.

- + diff --git a/reference/_skdecide.builders.domain.events.html b/reference/_skdecide.builders.domain.events.html index 7e665a6cd1..d982c7dbf4 100644 --- a/reference/_skdecide.builders.domain.events.html +++ b/reference/_skdecide.builders.domain.events.html @@ -8,7 +8,7 @@ - + @@ -271,6 +271,6 @@ memory parameter is mandatory here.

TIP

By default, this function is implemented using the skdecide.core.Space.contains() function on the space of enabled events provided by Events._get_enabled_events_from(), but it can be overridden for faster implementations.

# Parameters

# Returns

True if the event is enabled (False otherwise).

- + diff --git a/reference/_skdecide.builders.domain.goals.html b/reference/_skdecide.builders.domain.goals.html index e69d8e9d8e..9e35b0a1d5 100644 --- a/reference/_skdecide.builders.domain.goals.html +++ b/reference/_skdecide.builders.domain.goals.html @@ -8,7 +8,7 @@ - + @@ -67,6 +67,6 @@ self,
observation: StrDict[D.T_observation]
) -> StrDict[D.T_predicate]

Indicate whether an observation belongs to the goals.

TIP

By default, this function is implemented using the skdecide.core.Space.contains() function on the domain goals space provided by Goals._get_goals(), but it can be overridden for faster implementations.

# Parameters

# Returns

True if the observation is a goal (False otherwise).

- + diff --git a/reference/_skdecide.builders.domain.initialization.html b/reference/_skdecide.builders.domain.initialization.html index f84632e165..3861839158 100644 --- a/reference/_skdecide.builders.domain.initialization.html +++ b/reference/_skdecide.builders.domain.initialization.html @@ -8,7 +8,7 @@ - + @@ -114,6 +114,6 @@ self
) -> D.T_state

Reset the state of the environment and return an initial state.

This is a helper function called by default from Initializable._reset(). It focuses on the state level, as opposed to the observation one for the latter.

# Returns

An initial state.

- + diff --git a/reference/_skdecide.builders.domain.memory.html b/reference/_skdecide.builders.domain.memory.html index 80a12fa38f..5e5ba7d860 100644 --- a/reference/_skdecide.builders.domain.memory.html +++ b/reference/_skdecide.builders.domain.memory.html @@ -8,7 +8,7 @@ - + @@ -89,6 +89,6 @@ self,
state: Optional[D.T_state] = None
) -> Memory[D.T_state]

Initialize memory (possibly with a state) according to its specification and return it.

This function is automatically called by Initializable._reset() to reinitialize the internal memory whenever the domain is used as an environment.

# Parameters

# Returns

The new initialized memory.

- + diff --git a/reference/_skdecide.builders.domain.observability.html b/reference/_skdecide.builders.domain.observability.html index ce9aef3945..059ee25844 100644 --- a/reference/_skdecide.builders.domain.observability.html +++ b/reference/_skdecide.builders.domain.observability.html @@ -8,7 +8,7 @@ - + @@ -135,6 +135,6 @@

Check that an observation indeed belongs to the domain observation space.

TIP

By default, this function is implemented using the skdecide.core.Space.contains() function on the domain observation space provided by PartiallyObservable._get_observation_space(), but it can be overridden for faster implementations.

# Parameters

# Returns

True if the observation belongs to the domain observation space (False otherwise).

- + diff --git a/reference/_skdecide.builders.domain.renderability.html b/reference/_skdecide.builders.domain.renderability.html index 70422141df..cbd701ecb0 100644 --- a/reference/_skdecide.builders.domain.renderability.html +++ b/reference/_skdecide.builders.domain.renderability.html @@ -8,7 +8,7 @@ - + @@ -56,6 +56,6 @@ self,
memory: Memory[D.T_state],
**kwargs: Any
) -> Any

Compute a visual render of the given memory (state or history).

This is a helper function called by default from Renderable._render(), the difference being that the memory parameter is mandatory here.

# Parameters

# Returns

A render (e.g. image) or nothing (if the function handles the display directly).

- + diff --git a/reference/_skdecide.builders.domain.scheduling.conditional_tasks.html b/reference/_skdecide.builders.domain.scheduling.conditional_tasks.html index a8b0190d55..1858d89a92 100644 --- a/reference/_skdecide.builders.domain.scheduling.conditional_tasks.html +++ b/reference/_skdecide.builders.domain.scheduling.conditional_tasks.html @@ -8,7 +8,7 @@ - + @@ -186,6 +186,6 @@ self,
task: int
) -> List[int]

Samples the condition distributions associated with the given task and return a list of sampled conditions.

- + diff --git a/reference/_skdecide.builders.domain.scheduling.graph_toolbox.html b/reference/_skdecide.builders.domain.scheduling.graph_toolbox.html index 1ab96019b9..4de0014e3e 100644 --- a/reference/_skdecide.builders.domain.scheduling.graph_toolbox.html +++ b/reference/_skdecide.builders.domain.scheduling.graph_toolbox.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# builders.domain.scheduling.graph_toolbox

Domain specification

Domain
- + diff --git a/reference/_skdecide.builders.domain.scheduling.modes.html b/reference/_skdecide.builders.domain.scheduling.modes.html index 17dbc9c4fb..ba9d846658 100644 --- a/reference/_skdecide.builders.domain.scheduling.modes.html +++ b/reference/_skdecide.builders.domain.scheduling.modes.html @@ -8,7 +8,7 @@ - + @@ -103,6 +103,6 @@ self
) -> Dict[int, Dict[int, ModeConsumption]]

Return a nested dictionary where the first key is a task id and the second key is a mode id. The value is a Mode object defining the resource consumption.

- + diff --git a/reference/_skdecide.builders.domain.scheduling.preallocations.html b/reference/_skdecide.builders.domain.scheduling.preallocations.html index c34e3d596d..372ee378c6 100644 --- a/reference/_skdecide.builders.domain.scheduling.preallocations.html +++ b/reference/_skdecide.builders.domain.scheduling.preallocations.html @@ -8,7 +8,7 @@ - + @@ -57,6 +57,6 @@ self
) -> Dict[int, List[str]]

Return a dictionary where the key is the id of a task (int) and the value indicates the pre-allocated resources for this task (as a list of str)

- + diff --git a/reference/_skdecide.builders.domain.scheduling.precedence.html b/reference/_skdecide.builders.domain.scheduling.precedence.html index 613b06cef5..e5bf26ff99 100644 --- a/reference/_skdecide.builders.domain.scheduling.precedence.html +++ b/reference/_skdecide.builders.domain.scheduling.precedence.html @@ -8,7 +8,7 @@ - + @@ -61,6 +61,6 @@

Return the successors of the tasks. Successors are given as a list for a task given as a key.

# _get_successors WithPrecedence

_get_successors(
   self
) -> Dict[int, List[int]]

Return the successors of the tasks. Successors are given as a list for a task given as a key.

- + diff --git a/reference/_skdecide.builders.domain.scheduling.preemptivity.html b/reference/_skdecide.builders.domain.scheduling.preemptivity.html index 598d0b174a..b80f2af9e9 100644 --- a/reference/_skdecide.builders.domain.scheduling.preemptivity.html +++ b/reference/_skdecide.builders.domain.scheduling.preemptivity.html @@ -8,7 +8,7 @@ - + @@ -165,6 +165,6 @@ 5: ResumeType.Restart 6: ResumeType.NA }

- + diff --git a/reference/_skdecide.builders.domain.scheduling.resource_availability.html b/reference/_skdecide.builders.domain.scheduling.resource_availability.html index 9c1318a58b..75f27f1f46 100644 --- a/reference/_skdecide.builders.domain.scheduling.resource_availability.html +++ b/reference/_skdecide.builders.domain.scheduling.resource_availability.html @@ -8,7 +8,7 @@ - + @@ -94,6 +94,6 @@

Sample an amount of resource availability (int) for the given resource (either resource type or resource unit) at the given time. This number should be the sum of the number of resource available at time t and the number of resource of this type consumed so far).

- + diff --git a/reference/_skdecide.builders.domain.scheduling.resource_consumption.html b/reference/_skdecide.builders.domain.scheduling.resource_consumption.html index 69258db7c1..e1634a5006 100644 --- a/reference/_skdecide.builders.domain.scheduling.resource_consumption.html +++ b/reference/_skdecide.builders.domain.scheduling.resource_consumption.html @@ -8,7 +8,7 @@ - + @@ -57,6 +57,6 @@ self
) -> bool

Return true if the domain has variable resource consumption, false if the consumption of resource does not vary in time for any of the tasks

- + diff --git a/reference/_skdecide.builders.domain.scheduling.resource_costs.html b/reference/_skdecide.builders.domain.scheduling.resource_costs.html index a2eef3c382..ec3fdac899 100644 --- a/reference/_skdecide.builders.domain.scheduling.resource_costs.html +++ b/reference/_skdecide.builders.domain.scheduling.resource_costs.html @@ -8,7 +8,7 @@ - + @@ -69,6 +69,6 @@ self
) -> Dict[str, float]

Return a dictionary where the key is the name of a resource (str) and the value indicates the cost of using this resource per time unit.

- + diff --git a/reference/_skdecide.builders.domain.scheduling.resource_renewability.html b/reference/_skdecide.builders.domain.scheduling.resource_renewability.html index 37e50ce667..6afe8948ba 100644 --- a/reference/_skdecide.builders.domain.scheduling.resource_renewability.html +++ b/reference/_skdecide.builders.domain.scheduling.resource_renewability.html @@ -8,7 +8,7 @@ - + @@ -69,6 +69,6 @@ self
) -> Dict[str, bool]

Return a dictionary where the key is a resource name (string) and the value whether this resource is renewable (True) or not (False).

- + diff --git a/reference/_skdecide.builders.domain.scheduling.resource_type.html b/reference/_skdecide.builders.domain.scheduling.resource_type.html index aebd7336ad..f54876b1f1 100644 --- a/reference/_skdecide.builders.domain.scheduling.resource_type.html +++ b/reference/_skdecide.builders.domain.scheduling.resource_type.html @@ -8,7 +8,7 @@ - + @@ -83,6 +83,6 @@ An empty dictionary can be used if there are no resource unit matching a resource type.

# _get_resource_units_names WithResourceUnits

_get_resource_units_names(
   self
) -> List[str]

Return the names (string) of all resource units as a list.

- + diff --git a/reference/_skdecide.builders.domain.scheduling.scheduling_domains.html b/reference/_skdecide.builders.domain.scheduling.scheduling_domains.html index a7e27fb5cc..22c4c2f637 100644 --- a/reference/_skdecide.builders.domain.scheduling.scheduling_domains.html +++ b/reference/_skdecide.builders.domain.scheduling.scheduling_domains.html @@ -8,7 +8,7 @@ - + @@ -2743,6 +2743,6 @@ ATARI games), it is recommended to overwrite Environment._step() to call the external environment and not use the Environment._state_step() helper function.

WARNING

Before calling Environment._step() the first time or when the end of an episode is reached, Initializable._reset() must be called to reset the environment's state.

# Parameters

# Returns

The environment outcome of this step.

- + diff --git a/reference/_skdecide.builders.domain.scheduling.scheduling_domains_modelling.html b/reference/_skdecide.builders.domain.scheduling.scheduling_domains_modelling.html index 2b2fb3f8c6..9598d353a1 100644 --- a/reference/_skdecide.builders.domain.scheduling.scheduling_domains_modelling.html +++ b/reference/_skdecide.builders.domain.scheduling.scheduling_domains_modelling.html @@ -8,7 +8,7 @@ - + @@ -94,6 +94,6 @@ time_progress = True

# Constructor SchedulingAction

SchedulingAction(
   task: Union[int, None],
action: SchedulingActionEnum,
mode: Union[int, None],
time_progress: bool,
resource_unit_names: Optional[Set[str]] = None
)

Initialize self. See help(type(self)) for accurate signature.

- + diff --git a/reference/_skdecide.builders.domain.scheduling.skills.html b/reference/_skdecide.builders.domain.scheduling.skills.html index 62fd129bb0..570f8d5cc7 100644 --- a/reference/_skdecide.builders.domain.scheduling.skills.html +++ b/reference/_skdecide.builders.domain.scheduling.skills.html @@ -8,7 +8,7 @@ - + @@ -98,6 +98,6 @@

Return a nested dictionary where the first key is the name of a task and the second key is the name of a skill. The value defines the details of the skill. E.g. {task: {skill: (detail of skill)}}

- + diff --git a/reference/_skdecide.builders.domain.scheduling.task.html b/reference/_skdecide.builders.domain.scheduling.task.html index c7a2f2739a..0f20d3f9a0 100644 --- a/reference/_skdecide.builders.domain.scheduling.task.html +++ b/reference/_skdecide.builders.domain.scheduling.task.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# builders.domain.scheduling.task

Domain specification

Domain
- + diff --git a/reference/_skdecide.builders.domain.scheduling.task_duration.html b/reference/_skdecide.builders.domain.scheduling.task_duration.html index 78af4e86de..b5253af81c 100644 --- a/reference/_skdecide.builders.domain.scheduling.task_duration.html +++ b/reference/_skdecide.builders.domain.scheduling.task_duration.html @@ -8,7 +8,7 @@ - + @@ -157,6 +157,6 @@

Return the upper bound for the task duration of the given task in the given mode.

# _sample_task_duration SimulatedTaskDuration

_sample_task_duration(
   self,
task: int,
mode: Optional[int] = 1,
progress_from: Optional[float] = 0.0
) -> int

Return a task duration for the given task in the given mode.

- + diff --git a/reference/_skdecide.builders.domain.scheduling.task_progress.html b/reference/_skdecide.builders.domain.scheduling.task_progress.html index 7b6165d3ba..aab761cfab 100644 --- a/reference/_skdecide.builders.domain.scheduling.task_progress.html +++ b/reference/_skdecide.builders.domain.scheduling.task_progress.html @@ -8,7 +8,7 @@ - + @@ -55,6 +55,6 @@ self,
task: int,
t_from: int,
t_to: int,
mode: Optional[int],
sampled_duration: Optional[int] = None
) -> float

# Returns

The task progress (float) between t_from and t_to based on the task duration and assuming linear progress.

- + diff --git a/reference/_skdecide.builders.domain.scheduling.time_lag.html b/reference/_skdecide.builders.domain.scheduling.time_lag.html index a4791cc202..160b83f9ae 100644 --- a/reference/_skdecide.builders.domain.scheduling.time_lag.html +++ b/reference/_skdecide.builders.domain.scheduling.time_lag.html @@ -8,7 +8,7 @@ - + @@ -95,6 +95,6 @@ and the second key is the id of another task (int). The value is a TimeLag object containing the MINIMUM and MAXIMUM time (int) that needs to separate the end of the first task to the start of the second task.

- + diff --git a/reference/_skdecide.builders.domain.scheduling.time_windows.html b/reference/_skdecide.builders.domain.scheduling.time_windows.html index cad32b65b0..264963f2a9 100644 --- a/reference/_skdecide.builders.domain.scheduling.time_windows.html +++ b/reference/_skdecide.builders.domain.scheduling.time_windows.html @@ -8,7 +8,7 @@ - + @@ -99,6 +99,6 @@ self
) -> Dict[int, TimeWindow]

Return a dictionary where the key is the id of a task (int) and the value is a dictionary of EmptyTimeWindow object.

# Returns

A dictionary of TimeWindow objects.

- + diff --git a/reference/_skdecide.builders.domain.value.html b/reference/_skdecide.builders.domain.value.html index 2934e77837..24cdca7d05 100644 --- a/reference/_skdecide.builders.domain.value.html +++ b/reference/_skdecide.builders.domain.value.html @@ -8,7 +8,7 @@ - + @@ -56,6 +56,6 @@ advanced value types).

# Parameters

# Returns

True if the value is compliant (False otherwise).

# _is_positive PositiveCosts

_is_positive(
   self,
cost: D.T_value
) -> bool

Determine if a value is positive (can be overridden for advanced value types).

# Parameters

# Returns

True if the cost is positive (False otherwise).

- + diff --git a/reference/_skdecide.builders.solver.assessability.html b/reference/_skdecide.builders.solver.assessability.html index a04a1e3fa2..c935a1cec1 100644 --- a/reference/_skdecide.builders.solver.assessability.html +++ b/reference/_skdecide.builders.solver.assessability.html @@ -8,7 +8,7 @@ - + @@ -77,6 +77,6 @@

where is the current policy, any represents a trajectory sampled from the policy, is the return (cumulative reward) and the initial state for the trajectories.

# Parameters

# Returns

The estimated on-policy utility of the given observation.

- + diff --git a/reference/_skdecide.builders.solver.parallelability.html b/reference/_skdecide.builders.solver.parallelability.html index bc83ef2cf4..b0ce28b8bb 100644 --- a/reference/_skdecide.builders.solver.parallelability.html +++ b/reference/_skdecide.builders.solver.parallelability.html @@ -8,7 +8,7 @@ - + @@ -63,6 +63,6 @@ the set of lambda functions passed to the solver's constructor (e.g. heuristic lambda for heuristic-based solvers), and whether the parallel domain jobs should notify their status via the IPC protocol (required when interacting with other programming languages like C++)

- + diff --git a/reference/_skdecide.builders.solver.policy.html b/reference/_skdecide.builders.solver.policy.html index 8dcbc7d47a..5d66ee122c 100644 --- a/reference/_skdecide.builders.solver.policy.html +++ b/reference/_skdecide.builders.solver.policy.html @@ -8,7 +8,7 @@ - + @@ -86,6 +86,6 @@

Check whether the solver's current policy is defined for the given observation.

# Parameters

# Returns

True if the policy is defined for the given observation memory (False otherwise).

# _sample_action Policies

_sample_action(
   self,
observation: StrDict[D.T_observation]
) -> StrDict[List[D.T_event]]

Sample an action for the given observation (from the solver's current policy).

# Parameters

# Returns

The sampled action.

- + diff --git a/reference/_skdecide.builders.solver.restorability.html b/reference/_skdecide.builders.solver.restorability.html index 1b79161cbd..15541d013e 100644 --- a/reference/_skdecide.builders.solver.restorability.html +++ b/reference/_skdecide.builders.solver.restorability.html @@ -8,7 +8,7 @@ - + @@ -54,6 +54,6 @@

Restore the solver state from given path.

# Parameters

# _save Restorable

_save(
   self,
path: str
) -> None

Save the solver state to given path.

# Parameters

- + diff --git a/reference/_skdecide.core.html b/reference/_skdecide.core.html index 7e776985e0..893bed2ee0 100644 --- a/reference/_skdecide.core.html +++ b/reference/_skdecide.core.html @@ -8,7 +8,7 @@ - + @@ -171,6 +171,6 @@

Indicate whether this constraint requires the next_state parameter for its computation.

This is a helper function called by default from Constraint.is_constraint_dependent_on_next_state(), the difference being that the result is not cached here.

TIP

The underscore at the end of this function's name is a convention to remind that its result should be constant.

# Returns

True if the constraint computation depends on next_state (False otherwise).

- + diff --git a/reference/_skdecide.domains.html b/reference/_skdecide.domains.html index d2665bf1e6..0e72e5077d 100644 --- a/reference/_skdecide.domains.html +++ b/reference/_skdecide.domains.html @@ -8,7 +8,7 @@ - + @@ -1952,6 +1952,6 @@ domain is chosen and its id is returned to the incoming request.

# Constructor ShmParallelDomain

ShmParallelDomain(
   domain_factory,
shm_proxy,
lambdas = None,
nb_domains = 2,
ipc_notify = False
)

Initialize self. See help(type(self)) for accurate signature.

- + diff --git a/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.common_utils.html b/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.common_utils.html index d1179e97a4..0bb77708bb 100644 --- a/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.common_utils.html +++ b/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.common_utils.html @@ -8,7 +8,7 @@ - + @@ -54,6 +54,6 @@ :rtype: numpy.array

# intersect_interval

intersect_interval(
   x,
y
)

X and Y given by [low_bound, high_bound]

- + diff --git a/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.interpolator.intergrid.html b/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.interpolator.intergrid.html index 37df3562bf..cf7e3a6354 100644 --- a/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.interpolator.intergrid.html +++ b/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.interpolator.intergrid.html @@ -8,7 +8,7 @@ - + @@ -51,6 +51,6 @@

query_values = Intergrid(...) ( query_points npt x dim )

# _map_to_uniform_grid Intergrid

_map_to_uniform_grid(
   self,
X
)

clip, map X linear / nonlinear inplace

- + diff --git a/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.std_atm.html b/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.std_atm.html index 00027973ad..a2112c3654 100644 --- a/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.std_atm.html +++ b/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.std_atm.html @@ -8,7 +8,7 @@ - + @@ -239,6 +239,6 @@

Return the speed of sound, given the air temperature.

The temperature units may be deg C, F, K or R ('C', 'F', 'K' or 'R').

The speed units may be 'kt', 'mph', 'km/h', 'm/s' and 'ft/s'.

If the units are not specified, the units in default_units.py are used.

Examples:

Determine speed of sound in knots at 15 deg (default temperature units):

temp2speed_of_sound(15) 661.47882487301808

Determine speed of sound in mph at 120 deg F:

temp2speed_of_sound(120, speed_units = 'mph', temp_units = 'F') 804.73500154991291

- + diff --git a/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.unit_conversion.html b/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.unit_conversion.html index d0b4c7e0e9..5d6b90c024 100644 --- a/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.unit_conversion.html +++ b/reference/_skdecide.hub.domain.flight_planning.weather_interpolator.weather_tools.unit_conversion.html @@ -8,7 +8,7 @@ - + @@ -140,6 +140,6 @@ Thus there will be some variation in density from refinery to refinery.

This function uses the 15 deg C density values provided by BP, with the variation with temperature provided in the Canada Flight Supplement.

The grade may be specified as "80", "100" or "100LL". It defaults to "100LL" if it is not specified.

The temperature defaults to 15 deg C if it is not specified.

- + diff --git a/reference/_skdecide.hub.domain.gym.gym.html b/reference/_skdecide.hub.domain.gym.gym.html index 7f28496184..4f19a8dd29 100644 --- a/reference/_skdecide.hub.domain.gym.gym.html +++ b/reference/_skdecide.hub.domain.gym.gym.html @@ -8,7 +8,7 @@ - + @@ -1260,6 +1260,6 @@ calling reset() to reset this environment's state.

Accepts an action and returns a tuple (observation, reward, done, info).

# Parameters

# Returns

A tuple with following elements:

# unwrapped Env

unwrapped(
   self
)

Unwrap the scikit-decide domain and return it.

# Returns

The original scikit-decide domain.

- + diff --git a/reference/_skdecide.hub.domain.mastermind.mastermind.html b/reference/_skdecide.hub.domain.mastermind.mastermind.html index 9bc4937d11..1053149467 100644 --- a/reference/_skdecide.hub.domain.mastermind.mastermind.html +++ b/reference/_skdecide.hub.domain.mastermind.mastermind.html @@ -8,7 +8,7 @@ - + @@ -57,6 +57,6 @@

Make a new State object from a sequence or iterable

# _replace State

_replace(
   _self,
**kwds
)

Return a new State object replacing specified fields with new values

- + diff --git a/reference/_skdecide.hub.domain.maze.maze.html b/reference/_skdecide.hub.domain.maze.maze.html index 9dcea62c73..12a6743906 100644 --- a/reference/_skdecide.hub.domain.maze.maze.html +++ b/reference/_skdecide.hub.domain.maze.maze.html @@ -8,7 +8,7 @@ - + @@ -51,6 +51,6 @@

Make a new State object from a sequence or iterable

# _replace State

_replace(
   _self,
**kwds
)

Return a new State object replacing specified fields with new values

# Action

An enumeration.

- + diff --git a/reference/_skdecide.hub.domain.rcpsp.rcpsp_sk.html b/reference/_skdecide.hub.domain.rcpsp.rcpsp_sk.html index e44c960318..433aef076d 100644 --- a/reference/_skdecide.hub.domain.rcpsp.rcpsp_sk.html +++ b/reference/_skdecide.hub.domain.rcpsp.rcpsp_sk.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.domain.rcpsp.rcpsp_sk

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.domain.rcpsp.rcpsp_sk_parser.html b/reference/_skdecide.hub.domain.rcpsp.rcpsp_sk_parser.html index bef64e0ab0..2b7a7717c6 100644 --- a/reference/_skdecide.hub.domain.rcpsp.rcpsp_sk_parser.html +++ b/reference/_skdecide.hub.domain.rcpsp.rcpsp_sk_parser.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.domain.rcpsp.rcpsp_sk_parser

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.domain.rock_paper_scissors.rock_paper_scissors.html b/reference/_skdecide.hub.domain.rock_paper_scissors.rock_paper_scissors.html index 129bbecbc4..59caa280b0 100644 --- a/reference/_skdecide.hub.domain.rock_paper_scissors.rock_paper_scissors.html +++ b/reference/_skdecide.hub.domain.rock_paper_scissors.rock_paper_scissors.html @@ -8,7 +8,7 @@ - + @@ -51,6 +51,6 @@

Make a new State object from a sequence or iterable

# _replace State

_replace(
   _self,
**kwds
)

Return a new State object replacing specified fields with new values

- + diff --git a/reference/_skdecide.hub.domain.simple_grid_world.simple_grid_world.html b/reference/_skdecide.hub.domain.simple_grid_world.simple_grid_world.html index ff81e7a277..1d7c93816d 100644 --- a/reference/_skdecide.hub.domain.simple_grid_world.simple_grid_world.html +++ b/reference/_skdecide.hub.domain.simple_grid_world.simple_grid_world.html @@ -8,7 +8,7 @@ - + @@ -51,6 +51,6 @@

Make a new State object from a sequence or iterable

# _replace State

_replace(
   _self,
**kwds
)

Return a new State object replacing specified fields with new values

# Action

An enumeration.

- + diff --git a/reference/_skdecide.hub.solver.aostar.aostar.html b/reference/_skdecide.hub.solver.aostar.aostar.html index 3bb4e0fd8f..776c182648 100644 --- a/reference/_skdecide.hub.solver.aostar.aostar.html +++ b/reference/_skdecide.hub.solver.aostar.aostar.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.aostar.aostar

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.ars.ars.html b/reference/_skdecide.hub.solver.ars.ars.html index cf35c955bb..5d738801ad 100644 --- a/reference/_skdecide.hub.solver.ars.ars.html +++ b/reference/_skdecide.hub.solver.ars.ars.html @@ -8,7 +8,7 @@ - + @@ -47,6 +47,6 @@ (opens new window)

# hub.solver.ars.ars

Domain specification

Domain

# flatten

flatten(
   c
)

Generator flattening the structure

- + diff --git a/reference/_skdecide.hub.solver.astar.astar.html b/reference/_skdecide.hub.solver.astar.astar.html index 0698f0e482..e00f17b30e 100644 --- a/reference/_skdecide.hub.solver.astar.astar.html +++ b/reference/_skdecide.hub.solver.astar.astar.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.astar.astar

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.bfws.bfws.html b/reference/_skdecide.hub.solver.bfws.bfws.html index db545ede39..52c015e6e4 100644 --- a/reference/_skdecide.hub.solver.bfws.bfws.html +++ b/reference/_skdecide.hub.solver.bfws.bfws.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.bfws.bfws

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.cgp.cgp.html b/reference/_skdecide.hub.solver.cgp.cgp.html index 0bf07e8504..025f2dc48d 100644 --- a/reference/_skdecide.hub.solver.cgp.cgp.html +++ b/reference/_skdecide.hub.solver.cgp.cgp.html @@ -8,7 +8,7 @@ - + @@ -63,6 +63,6 @@ :param vals: an array of [-1,1] normalised values :param types: the gym types corresponding to vals :return: the same vals array with denormalised values

- + diff --git a/reference/_skdecide.hub.solver.cgp.pycgp.cgp.html b/reference/_skdecide.hub.solver.cgp.pycgp.cgp.html index 441e8710c3..3ce12ca096 100644 --- a/reference/_skdecide.hub.solver.cgp.pycgp.cgp.html +++ b/reference/_skdecide.hub.solver.cgp.pycgp.cgp.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.cgp.pycgp.cgp

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.cgp.pycgp.cgpes.html b/reference/_skdecide.hub.solver.cgp.pycgp.cgpes.html index 4ce0fc52af..40f7848eac 100644 --- a/reference/_skdecide.hub.solver.cgp.pycgp.cgpes.html +++ b/reference/_skdecide.hub.solver.cgp.pycgp.cgpes.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.cgp.pycgp.cgpes

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.cgp.pycgp.cgpfunctions.html b/reference/_skdecide.hub.solver.cgp.pycgp.cgpfunctions.html index 1c5d69340a..4360f68cf9 100644 --- a/reference/_skdecide.hub.solver.cgp.pycgp.cgpfunctions.html +++ b/reference/_skdecide.hub.solver.cgp.pycgp.cgpfunctions.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.cgp.pycgp.cgpfunctions

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.cgp.pycgp.evaluator.html b/reference/_skdecide.hub.solver.cgp.pycgp.evaluator.html index a50380da46..8288eec73f 100644 --- a/reference/_skdecide.hub.solver.cgp.pycgp.evaluator.html +++ b/reference/_skdecide.hub.solver.cgp.pycgp.evaluator.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.cgp.pycgp.evaluator

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.do_solver.do_solver_scheduling.html b/reference/_skdecide.hub.solver.do_solver.do_solver_scheduling.html index 361f29ff5a..71a1db9171 100644 --- a/reference/_skdecide.hub.solver.do_solver.do_solver_scheduling.html +++ b/reference/_skdecide.hub.solver.do_solver.do_solver_scheduling.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.do_solver.do_solver_scheduling

Domain specification

Domain

# SolvingMethod

An enumeration.

- + diff --git a/reference/_skdecide.hub.solver.do_solver.sk_to_do_binding.html b/reference/_skdecide.hub.solver.do_solver.sk_to_do_binding.html index 155e2db214..13ad239540 100644 --- a/reference/_skdecide.hub.solver.do_solver.sk_to_do_binding.html +++ b/reference/_skdecide.hub.solver.do_solver.sk_to_do_binding.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.do_solver.sk_to_do_binding

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.gphh.gphh.html b/reference/_skdecide.hub.solver.gphh.gphh.html index 5689a7200d..6635ddc6ed 100644 --- a/reference/_skdecide.hub.solver.gphh.gphh.html +++ b/reference/_skdecide.hub.solver.gphh.gphh.html @@ -8,7 +8,7 @@ - + @@ -53,6 +53,6 @@

Will only work if you store cpm results into the object. dirty trick

# feature_lfd

feature_lfd(
   domain: SchedulingDomain,
cpm,
cpm_esd,
task_id: int,
**kwargs
)

Will only work if you store cpm results into the object. dirty trick

# FeatureEnum

An enumeration.

# EvaluationGPHH

An enumeration.

# PermutationDistance

An enumeration.

# PoolAggregationMethod

An enumeration.

- + diff --git a/reference/_skdecide.hub.solver.graph_explorer.DFSExploration.html b/reference/_skdecide.hub.solver.graph_explorer.DFSExploration.html index 3f5f3c7217..94ec8f02e8 100644 --- a/reference/_skdecide.hub.solver.graph_explorer.DFSExploration.html +++ b/reference/_skdecide.hub.solver.graph_explorer.DFSExploration.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.graph_explorer.DFSExploration

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.graph_explorer.DFS_Uncertain_Exploration.html b/reference/_skdecide.hub.solver.graph_explorer.DFS_Uncertain_Exploration.html index 689397b99e..d53ece5b08 100644 --- a/reference/_skdecide.hub.solver.graph_explorer.DFS_Uncertain_Exploration.html +++ b/reference/_skdecide.hub.solver.graph_explorer.DFS_Uncertain_Exploration.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.graph_explorer.DFS_Uncertain_Exploration

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.graph_explorer.FullSpaceExploration.html b/reference/_skdecide.hub.solver.graph_explorer.FullSpaceExploration.html index a3433e4822..202d6699f4 100644 --- a/reference/_skdecide.hub.solver.graph_explorer.FullSpaceExploration.html +++ b/reference/_skdecide.hub.solver.graph_explorer.FullSpaceExploration.html @@ -8,7 +8,7 @@ - + @@ -47,6 +47,6 @@ (opens new window)

# hub.solver.graph_explorer.FullSpaceExploration

Domain specification

Domain

# reachable_states

reachable_states(
   self,
s0: Any
)

Computes all states reachable from s0.

- + diff --git a/reference/_skdecide.hub.solver.graph_explorer.GraphDomain.html b/reference/_skdecide.hub.solver.graph_explorer.GraphDomain.html index 7405b4b27c..91dd33c560 100644 --- a/reference/_skdecide.hub.solver.graph_explorer.GraphDomain.html +++ b/reference/_skdecide.hub.solver.graph_explorer.GraphDomain.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.graph_explorer.GraphDomain

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.graph_explorer.GraphExploration.html b/reference/_skdecide.hub.solver.graph_explorer.GraphExploration.html index 776090d2c6..59d1937745 100644 --- a/reference/_skdecide.hub.solver.graph_explorer.GraphExploration.html +++ b/reference/_skdecide.hub.solver.graph_explorer.GraphExploration.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.graph_explorer.GraphExploration

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.ilaostar.ilaostar.html b/reference/_skdecide.hub.solver.ilaostar.ilaostar.html index 110ddf5556..62156a2a8a 100644 --- a/reference/_skdecide.hub.solver.ilaostar.ilaostar.html +++ b/reference/_skdecide.hub.solver.ilaostar.ilaostar.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.ilaostar.ilaostar

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.iw.iw.html b/reference/_skdecide.hub.solver.iw.iw.html index 901cf0c542..ce2219fc3a 100644 --- a/reference/_skdecide.hub.solver.iw.iw.html +++ b/reference/_skdecide.hub.solver.iw.iw.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.iw.iw

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.lazy_astar.lazy_astar.html b/reference/_skdecide.hub.solver.lazy_astar.lazy_astar.html index c500727f66..451ad9f9ce 100644 --- a/reference/_skdecide.hub.solver.lazy_astar.lazy_astar.html +++ b/reference/_skdecide.hub.solver.lazy_astar.lazy_astar.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.lazy_astar.lazy_astar

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.lrtastar.lrtastar.html b/reference/_skdecide.hub.solver.lrtastar.lrtastar.html index cb5561dec0..701691dbee 100644 --- a/reference/_skdecide.hub.solver.lrtastar.lrtastar.html +++ b/reference/_skdecide.hub.solver.lrtastar.lrtastar.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.lrtastar.lrtastar

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.lrtdp.lrtdp.html b/reference/_skdecide.hub.solver.lrtdp.lrtdp.html index a5440d7cb2..3a0388f319 100644 --- a/reference/_skdecide.hub.solver.lrtdp.lrtdp.html +++ b/reference/_skdecide.hub.solver.lrtdp.lrtdp.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.lrtdp.lrtdp

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.mahd.mahd.html b/reference/_skdecide.hub.solver.mahd.mahd.html index 63fc41bb55..79caf2e5a8 100644 --- a/reference/_skdecide.hub.solver.mahd.mahd.html +++ b/reference/_skdecide.hub.solver.mahd.mahd.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.mahd.mahd

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.martdp.martdp.html b/reference/_skdecide.hub.solver.martdp.martdp.html index 8d670cdee3..4b09862c84 100644 --- a/reference/_skdecide.hub.solver.martdp.martdp.html +++ b/reference/_skdecide.hub.solver.martdp.martdp.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.martdp.martdp

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.maxent_irl.maxent_irl.html b/reference/_skdecide.hub.solver.maxent_irl.maxent_irl.html index 026c98cb39..64a0a0c7db 100644 --- a/reference/_skdecide.hub.solver.maxent_irl.maxent_irl.html +++ b/reference/_skdecide.hub.solver.maxent_irl.maxent_irl.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.maxent_irl.maxent_irl

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.mcts.mcts.html b/reference/_skdecide.hub.solver.mcts.mcts.html index 4508166888..7d0e802851 100644 --- a/reference/_skdecide.hub.solver.mcts.mcts.html +++ b/reference/_skdecide.hub.solver.mcts.mcts.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.mcts.mcts

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.meta_policy.meta_policies.html b/reference/_skdecide.hub.solver.meta_policy.meta_policies.html index 8c89a78dd8..81ac51412d 100644 --- a/reference/_skdecide.hub.solver.meta_policy.meta_policies.html +++ b/reference/_skdecide.hub.solver.meta_policy.meta_policies.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.meta_policy.meta_policies

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.pile_policy.pile_policy.html b/reference/_skdecide.hub.solver.pile_policy.pile_policy.html index a1b9c6b192..c7b6cec2a7 100644 --- a/reference/_skdecide.hub.solver.pile_policy.pile_policy.html +++ b/reference/_skdecide.hub.solver.pile_policy.pile_policy.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.pile_policy.pile_policy

Domain specification

Domain

# GreedyChoice

An enumeration.

- + diff --git a/reference/_skdecide.hub.solver.policy_evaluators.policy_evaluator.html b/reference/_skdecide.hub.solver.policy_evaluators.policy_evaluator.html index 865f8ea336..4a7b02e934 100644 --- a/reference/_skdecide.hub.solver.policy_evaluators.policy_evaluator.html +++ b/reference/_skdecide.hub.solver.policy_evaluators.policy_evaluator.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.policy_evaluators.policy_evaluator

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.pomcp.pomcp.html b/reference/_skdecide.hub.solver.pomcp.pomcp.html index 4ee55a6cff..fb1167d751 100644 --- a/reference/_skdecide.hub.solver.pomcp.pomcp.html +++ b/reference/_skdecide.hub.solver.pomcp.pomcp.html @@ -8,7 +8,7 @@ - + @@ -48,6 +48,6 @@ distribution,
element,
n = 100
)

Utility function to get the probability of a specific element from a scikit-decide distribution (based on sampling if this distribution is not a DiscreteDistribution).

- + diff --git a/reference/_skdecide.hub.solver.ray_rllib.ray_rllib.html b/reference/_skdecide.hub.solver.ray_rllib.ray_rllib.html index 1ad3f49673..590104df8c 100644 --- a/reference/_skdecide.hub.solver.ray_rllib.ray_rllib.html +++ b/reference/_skdecide.hub.solver.ray_rllib.ray_rllib.html @@ -8,7 +8,7 @@ - + @@ -111,6 +111,6 @@ self,
memory: Memory[D.T_state]
) -> None

Run the solving process from a given state.

TIP

Create the domain first by calling the @Solver.reset() method

# Parameters

TIP

The nature of the solutions produced here depends on other solver's characteristics like policy and assessibility.

- + diff --git a/reference/_skdecide.hub.solver.riw.riw.html b/reference/_skdecide.hub.solver.riw.riw.html index d4fccee677..74d7e7b2a2 100644 --- a/reference/_skdecide.hub.solver.riw.riw.html +++ b/reference/_skdecide.hub.solver.riw.riw.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.riw.riw

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.sgs_policies.sgs_policies.html b/reference/_skdecide.hub.solver.sgs_policies.sgs_policies.html index 09b38b9763..a6369d376b 100644 --- a/reference/_skdecide.hub.solver.sgs_policies.sgs_policies.html +++ b/reference/_skdecide.hub.solver.sgs_policies.sgs_policies.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.sgs_policies.sgs_policies

Domain specification

Domain

# BasePolicyMethod

An enumeration.

- + diff --git a/reference/_skdecide.hub.solver.simple_greedy.simple_greedy.html b/reference/_skdecide.hub.solver.simple_greedy.simple_greedy.html index ce8d391042..a7fa567508 100644 --- a/reference/_skdecide.hub.solver.simple_greedy.simple_greedy.html +++ b/reference/_skdecide.hub.solver.simple_greedy.simple_greedy.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)

# hub.solver.simple_greedy.simple_greedy

Domain specification

Domain
- + diff --git a/reference/_skdecide.hub.solver.stable_baselines.stable_baselines.html b/reference/_skdecide.hub.solver.stable_baselines.stable_baselines.html index c5058d8ea5..7df8829eca 100644 --- a/reference/_skdecide.hub.solver.stable_baselines.stable_baselines.html +++ b/reference/_skdecide.hub.solver.stable_baselines.stable_baselines.html @@ -8,7 +8,7 @@ - + @@ -111,6 +111,6 @@ self,
memory: Memory[D.T_state]
) -> None

Run the solving process from a given state.

TIP

Create the domain first by calling the @Solver.reset() method

# Parameters

TIP

The nature of the solutions produced here depends on other solver's characteristics like policy and assessibility.

- + diff --git a/reference/_skdecide.hub.space.gym.gym.html b/reference/_skdecide.hub.space.gym.gym.html index 24245910aa..8d5016eccf 100644 --- a/reference/_skdecide.hub.space.gym.gym.html +++ b/reference/_skdecide.hub.space.gym.gym.html @@ -8,7 +8,7 @@ - + @@ -179,6 +179,6 @@

Convert a batch of samples from this space to a JSONable data type.

# Parameters

# Returns

The resulting JSONable data type.

# unwrapped GymSpace

unwrapped(
   self
) -> gym_spaces.Dict

Unwrap the Gym Dict space (gym.spaces.Dict) and return it.

# Returns

The original Gym Dict space created from the dataclass.

- + diff --git a/reference/_skdecide.solvers.html b/reference/_skdecide.solvers.html index d4a4d3dc84..7520b1ef10 100644 --- a/reference/_skdecide.solvers.html +++ b/reference/_skdecide.solvers.html @@ -8,7 +8,7 @@ - + @@ -163,6 +163,6 @@ self,
memory: Memory[D.T_state]
) -> None

Run the solving process from a given state.

TIP

Create the domain first by calling the @Solver.reset() method

# Parameters

TIP

The nature of the solutions produced here depends on other solver's characteristics like policy and assessibility.

- + diff --git a/reference/_skdecide.utils.html b/reference/_skdecide.utils.html index d2169c0b76..34789d27c1 100644 --- a/reference/_skdecide.utils.html +++ b/reference/_skdecide.utils.html @@ -8,7 +8,7 @@ - + @@ -49,6 +49,6 @@

This method will run one or more episodes in a domain according to the policy of a solver.

# Parameters

# rollout_episode

rollout_episode(
   domain: Domain,
solver: Optional[Union[Solver, Policies]] = None,
from_memory: Optional[Memory[D.T_state]] = None,
from_action: Optional[StrDict[List[D.T_event]]] = None,
num_episodes: int = 1,
max_steps: Optional[int] = None,
render: bool = True,
max_framerate: Optional[float] = None,
verbose: bool = True,
action_formatter: Optional[Callable[[D.T_event], str]] = None,
outcome_formatter: Optional[Callable[[EnvironmentOutcome], str]] = None,
save_result_directory: str = None
) -> Tuple[List[D.T_observation], List[D.T_event], List[D.T_value]]

This method will run one or more episodes in a domain according to the policy of a solver.

# Parameters

- + diff --git a/reference/index.html b/reference/index.html index 934d1f5495..b6b27136a3 100644 --- a/reference/index.html +++ b/reference/index.html @@ -8,7 +8,7 @@ - + @@ -45,6 +45,6 @@ GitHub (opens new window)
- +